我的大部分Java程序都处理Excel和Apache POI。但是,一种方法似乎破坏了文件,迫使用户在打开文件之前对其进行修复。尝试打开时的Excel消息是:“我们在[工作簿]中发现了一些内容问题。您是否要我们尝试尽可能多地恢复?如果您信任此工作簿的来源,请单击“是”。 / p>
实际上,我用另一种方法编辑此确切的工作簿,没有任何问题。据我所知,在这个看似错误的代码中,我没有做过以前没有做过的事情。
public static void refreshExcel() {
try {
workbook = new XSSFWorkbook(new BufferedInputStream(new FileInputStream(file)));
sheet = workbook.getSheet("DISTRIBUTION");
} catch (Exception ex) {
MasterLog.appendError(ex);
}//try-catch
sheet.disableLocking();
//you can ignore the next 3 lines, they essentially find the rows that need to be updated
ArrayList<String> list = Log.modelLackingSCs();
for (String sc : list) {
int desiredIndex = findFirstIndex(sc);
XSSFRow row = sheet.getRow(desiredIndex);
try {
while (row.getCell(10).getNumericCellValue() == Integer.parseInt(sc)) {
row.createCell(8).setCellValue(OrderLog.findShipDate(OrderLog.getWB(sc)));
row = sheet.getRow(++desiredIndex);
}//while
} catch (IllegalStateException ise) {
MasterLog.appendEntry("ise");
} catch (Exception ex) {
MasterLog.appendError(ex);
}//try-catch
}//for
sheet.enableLocking();
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
workbook.write(bos);
} catch (Exception ex) {
MasterLog.appendError(ex);
}//try-catch
}//refreshExcel()