Top / Java / DBUnit / ExcelシートでImport,Exportする

データをExcel形式でエクスポートする

さて、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&amp;characterEncoding=ujis</value>
      </property>
      <property name="username"><value>xxxx</value></property>
      <property name="password"><value>xxxx</value></property>
    </bean>

実行するとexport.xlsが出力されます。内容は以下の通り

export.png

テーブルがExcelのシートになってるところがシブイです。

データをExcelからインポートする

さて最後です。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の内容がテーブルに反映されます。簡単ですね。

つかってみて

これでテストデータをオラーってExcelで作成して、ドカンとimportができそうです。結構便利です。

関連リンク


この記事は

選択肢 投票
おもしろかった 62  
そうでもない 3  

Top / Java / DBUnit / ExcelシートでImport,Exportする

現在のアクセス:51882


添付ファイル: fileexport.png 2519件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-07-20 (木) 14:38:13 (274d)