DbUnitのExportタスク
で,format="excel"が指定できないのが不便だったので,ちっと弄ってみた.
あと,Excelの日本語対応も(これはdotさんがpatch送付済みか)
diff -uNr java.old/org/dbunit/ant/Export.java java/org/dbunit/ant/Export.java --- java.old/org/dbunit/ant/Export.java Fri Jan 23 01:05:38 2004 +++ java/org/dbunit/ant/Export.java Mon Apr 26 17:44:59 2004 @@ -25,6 +25,7 @@ import org.dbunit.database.IDatabaseConnection; import org.dbunit.database.QueryDataSet; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.excel.XlsDataSet; import org.dbunit.dataset.xml.FlatDtdDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.dataset.xml.XmlDataSet; @@ -55,6 +56,7 @@ private static final String FORMAT_FLAT = "flat"; private static final String FORMAT_XML = "xml"; private static final String FORMAT_DTD = "dtd"; + private static final String FORMAT_EXCEL = "excel"; private File _dest; private String _format = FORMAT_FLAT; @@ -93,7 +95,8 @@ { if (format.equalsIgnoreCase(FORMAT_FLAT) || format.equalsIgnoreCase(FORMAT_XML) - || format.equalsIgnoreCase(FORMAT_DTD)) + || format.equalsIgnoreCase(FORMAT_DTD) + || format.equalsIgnoreCase(FORMAT_EXCEL)) { _format = format; } @@ -165,6 +168,10 @@ else if (_format.equalsIgnoreCase(FORMAT_DTD)) { FlatDtdDataSet.write(dataset, out); + } + else if (_format.equalsIgnoreCase(FORMAT_EXCEL)) + { + XlsDataSet.write(dataset, out); } } finally diff -uNr java.old/org/dbunit/dataset/excel/XlsDataSet.java java/org/dbunit/dataset/excel/XlsDataSet.java --- java.old/org/dbunit/dataset/excel/XlsDataSet.java Fri Jan 23 01:05:38 2004 +++ java/org/dbunit/dataset/excel/XlsDataSet.java Mon Apr 19 15:51:09 2004 @@ -100,6 +100,7 @@ { Column column = columns[j]; HSSFCell cell = headerRow.createCell((short)j); + cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(column.getColumnName()); } @@ -114,6 +115,7 @@ if (value != null) { HSSFCell cell = row.createCell((short)k); + cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(DataType.asString(value)); } }
これで一応動いているが,ホントにいいのかは知らない.