DBUnit というDB用のUnitテストツールがあるのですが、これにはDBをXML形式やExcel形式でExportする機能があります。またDBUnitにはAntタスクも付属していて、XML形式でExportするAntタスクなどがあります。 さてこのDBUnitにはExcelにExportするAntタスクがなかったので、作ってみました。 ダウンロード †インストール †前述の通り、ExcelにExportする機能自体はDBUnitを使用しています。またDBUnitはJakartaのPOI(ExcelをJavaで扱うAPI)を使用しているためPOIも必要です。具体的には dbunit-2.1.jar poi-2.5.1-final-20040804.jar poi-contrib-2.5.1-final-20040804.jar poi-scratchpad-2.5.1-final-20040804.jar が必要です。これらのライブラリは よりダウンロードできますので、ダウンロードしAnt内でパスを通してください。もちろん各DBのJDBCドライバのjarも必要です。 サンプル †
ソースコード †/******************************************************************************* * Copyright (c) 2006 Masatomi KINO. * All rights reserved. * $Id: ExcelExportTask.java,v 1.1 2006/12/17 07:02:58 cvsuser Exp $ *******************************************************************************/ //作成日: 2006/12/17 package nu.mine.kino.dbunit.ant; import java.io.File; import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITableIterator; import org.dbunit.dataset.excel.XlsDataSet; /** * @author Masatomi KINO * @version $Revision: 1.1 $ */ public class ExcelExportTask extends Task { private String driver; private String url; private String userId; private String password; private String schema; private Export export; public Export createExport() { if (export == null) { export = new Export(); } return export; } public void execute() throws BuildException { IDatabaseConnection con = null; try { con = getConnection(); IDataSet dataset = con.createDataSet(); ITableIterator iterator = dataset.iterator(); System.out.println("-------------------"); while (iterator.next()) { System.out.println(iterator.getTableMetaData().getTableName()); } System.out.println("-------------------"); XlsDataSet.write(dataset, new FileOutputStream(export.getDest())); } catch (Exception e) { e.printStackTrace(); throw new BuildException(e); } finally { try { if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } private IDatabaseConnection getConnection() throws Exception { System.out.println("driver : " + driver); System.out.println("url : " + url); System.out.println("userId : " + userId); System.out.println("password : " + password); System.out.println("schema : " + schema); System.out.println("export : " + new File(export.getDest()).getAbsolutePath()); Class driverClass = Class.forName(driver); Connection connection = DriverManager.getConnection(url, userId, password); return new DatabaseConnection(connection, schema); } 以下setterなので省略 } この記事は
現在のアクセス:20464 |