java jxl excel 数据导出 重新命名无效的工作表名称

来源:互联网 发布:qq个人业务源码带后台 编辑:程序博客网 时间:2024/04/28 19:29

今天在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,才导致这个问题的出现。