我正在编写一个读取多个.csv文件并减少行数的应用程序。
应用程序的输出是excel文件(.xls)。我们将这些文件作为BOM上传到商店。
除了一个以外,它适用于所有商店。在那家商店,我得到一个结果"无法读取文件"。
巧合的是,我注意到如果我在Excel中打开相同的文件,然后再次保存,商店会接受它。
不知何故,直接生成的文件与在Excel中打开并保存的文件不同。
这是我的代码:
@Override
public void writePurchaseList(String path, List<PurchaseItem> list) {
Workbook workbook = new HSSFWorkbook();
Sheet studentsSheet = workbook.createSheet("BOM");
final String[] header = new String[] { "quantity", "description","orderNo" };
int rowIndex = 0;
int cellIndex = 0;
Row row = studentsSheet.createRow(rowIndex++);
row.createCell(cellIndex++).setCellValue(header[0]);
row.createCell(cellIndex++).setCellValue(header[1]);
row.createCell(cellIndex++).setCellValue(header[2]);
for(PurchaseItem item : list){
cellIndex = 0;
row = studentsSheet.createRow(rowIndex++);
row.createCell(cellIndex++).setCellValue(item.getItemQuantity());
row.createCell(cellIndex++).setCellValue(item.getDescription());
row.createCell(cellIndex++).setCellValue(item.getOrderNumber());
}
try {
FileOutputStream fos = new FileOutputStream(path+".xls");
workbook.write(fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
任何想知道我做错了什么的人?
// LG
答案 0 :(得分:0)
我记得多年前在Apache POI工作簿中遇到过类似的问题。我认为当将null值写入单元格时,它可能与工作簿的缺失单元格策略有关。您可以尝试使用以下命令设置工作簿缺少单元格策略:
Workbook workbook = new HSSFWorkbook();
workbook.setMissingCellPolicy(Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);