java jxl excel 数据导出 重新命名无效的工作表名称
今天在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,才导致这个问题的出现。