alarmtime_Activity
我正在尝试使用java创建简单的excel文件。我收到了上述错误。
答案 0 :(得分:2)
你的问题就在这里:
if (!file.exists()) file.createNewFile();
这会创建一个全新的0字节文件,该文件不是有效的Excel文件。这就是POI对象的原因。
此外,您使用的是旧版本的Apache POI。如果你足够愚蠢地要求他们读取零字节文件,那么较新的例外会提供更有用的例外
考虑到advice on Files vs InputStreams,但注意到您正在进行已打开文件尚未完全支持的就地写入,请将您的代码更改为:
Workbook workbook = null;
File file = new File("file4.xls");
if (!file.exists()) {
if (file.toString().endsWith(".xlsx")) {
workbook = new XSSFWorkbook();
} else {
workbook = new HSSFWorkbook();
}
} else {
workbook = WorkbookFactory.create(new FileInputStream(file));
}
这适用于.xls
和.xlsx
个文件,并避免使用错误
虽然你真的应该升级你的Apache POI版本......
答案 1 :(得分:2)
打开文件一次。 单击“另存为”一次检查文件。如果它是从HTML生成的,则将在下拉菜单中显示为网页(* .htm, .html)。 您可以将其另存为Excel 97-2003工作簿( .xls),然后重试以读取代码。以我为例。