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?を使ってこんな感じ。

実行すると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ができそうです。結構便利です。

関連リンク


この記事は

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

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

現在のアクセス:51876


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS