- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**データをExcel形式でエクスポートする [#i13eb1e2]
さて、[[Java/DBUnit/XMLでImport,Exportする]] でxmlファイルをimport/exportできるのはわかりましたが、このxmlファイルを手で作らなくてはいけないんだったら、結局面倒ですね。つうことで今度はExcel形式でExportします。AntタスクにはExcel関連のものはないっぽく、プログラムを作る必要があります。っても以下の感じ。
public static void main(String[] args) {
DOMConfigurator.configure("log4j.xml");
IDatabaseConnection con = null;
try {
con = getConnection();
IDataSet dataset = con.createDataSet();
XlsDataSet.write(dataset, new FileOutputStream("export.xls"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
getConnectionは以下のようにしました。DataSourceを作るのが面倒だったのでDIでInjectionしてます。
protected static IDatabaseConnection getConnection() throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "hibernate-spring_test.xml" });
DataSource datasource = (DataSource) context.getBean("dataSource");
return new DatabaseConnection(datasource.getConnection(), "webdb1");<-schema名
}
でdataSourceのJavaBeansはorg.apache.commons.dbcp.BasicDataSourceを使ってこんな感じ。
-beans.xmlの中身。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://192.168.10.5/webdb1?useUnicode=true&characterEncoding=ujis</value>
</property>
<property name="username"><value>xxxx</value></property>
<property name="password"><value>xxxx</value></property>
</bean>
実行するとexport.xlsが出力されます。内容は以下の通り
#ref(export.png)
テーブルがExcelのシートになってるところがシブイです。
**データをExcelからインポートする [#y217c7fb]
さて最後です。Excelファイルをimportします。さっきのxlsファイルをインポートデータとして使用します。import.xlsとしました。
public static void main(String[] args) {
DOMConfigurator.configure("log4j.xml");
IDatabaseConnection con = null;
try {
con = getConnection(); // <- Exportのときと同じ
IDataSet dataset = new XlsDataSet(new File("import.xls"));
DatabaseOperation.CLEAN_INSERT.execute(con, dataset);
// deleteしてからinsert
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
実行すれば、全件Delete後import.xlsの内容がテーブルに反映されます。簡単ですね。
**つかってみて [#f2bd6603]
これでテストデータをオラーってExcelで作成して、ドカンとimportができそうです。結構便利です。
**関連リンク [#d325a0e3]
-Java/Ant/DBをExcelにExportするAntタスク
----
この記事は
#vote(おもしろかった[20],そうでもない[1])
#vote(おもしろかった[21],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}