Apache POI を使用して csv から Excel ファイルにデータを書き込む際に 2 つの問題があります。データは日付と数字で構成されています。問題は次のとおりです。
1) The numbers are written as strings.
2) Excel cannot read the date format (this messes the graphs up)
コード(以前に助けてもらったもの):
String name = "test";
Sheet sheet = wb.getSheet(name);
if (sheet == null) {
sheet = wb.createSheet(name);
}
int rowCount = 0;
Scanner scanner = new Scanner(new File("/tmp/" + name + ".csv"));
while (scanner.hasNextLine()) {
String[] rowData = scanner.nextLine().split(",");
for (int col = 0; col < rowData.length; col++) {
Row row = sheet.getRow(rowCount);
if (row == null)
row = sheet.createRow(rowCount);
Cell cell = row.getCell(col);
if (cell == null) {
cell = row.createCell(col);
}
cell.setCellValue(rowData[col]);
}
rowCount++;
}
wb.write(new FileOutputStream(excel));
}
1)Double.parseDouble(rowData[col])
エクセルファイルにデータを入力する際に使ってみました。しかし、これにより空の文字列エラーが発生します。でセル形式を設定しましstyle.setDataFormat(format.getFormat("#,##0.0000"));
たが、それでも機能しません
2) 日付形式を使用してみまし cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yyyy hh:mm:ss"));
たが、それでも Excel グラフはこの形式を読み取ることができません。(csvファイルから手動でコピーして貼り付けると機能します)。
基本的に、Apache poi を使用してデータをコピーすると、コピーされたセルに依存する他のデータは更新されません。たとえば、セルに 100 個のセルの平均値があり、これらのセルにデータを手動でコピーすると、自動的に更新されます。しかし、Java を介してコピーすると、セルは更新されません。