今天在java中使用jxl导出数据到excel工作表的时候,无论是在线直接打开还是保存到本地再打开,都会提示下面的错误信息:
“Excel在‘excel.xls'中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作薄的来源,请单击‘是’。”
“修复到“excel.xls”
通过修复或删除不可读取的内容,Excel已能够打开该文件。
重新命名无效的工作表名称。
......
单击查看修复记录:C:\Users\dragon\AppData\Local\Temp\error069320_01.xml
”
截图如下:



工作环境:WIN7 64位 + MyEclipse6.5 + jxl
在百度、google搜索了一番,都没有找到答案,后来跟踪代码突然发现,原来自己写入excel是通过一个for循环来实现的。
在循环中对同名的工作表进行了重复定义与赋值,导致了这个问题的发生。
“重新命名无效的工作表名称。”出现几行就证明重写了几个WritableSheet。例如我这里出现了8次,就是在for循环内重写了8次excel的工作表。代码如下:
WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream());
for(int i=0; i<size; i++){
.......
WritableSheet ws = wwb.createSheet(name, num);
......
}
后来对上面的代码进行改造,取消了循环,就正常了。
这个问题的关键在于在for循环内定义了同名的WritableSheet,才导致这个问题的出现。
本文介绍了一个在使用jxl进行Excel导出时遇到的问题,即打开导出的文件时提示不可读内容并需要修复。问题原因在于循环中重复定义了同名的工作表,导致Excel无法正确打开。
2354

被折叠的 条评论
为什么被折叠?



