我正在使用Apache POI 3.12
(SXSSF
工作簿)来生成.xlsx
个文件。
问题在于我正在进行生成,当我打开文件时,我收到了错误消息:
Excel在file.xlsx中找到了不可读的内容。你想恢复吗? 这个工作簿的内容?如果您相信这个来源 工作簿,单击是。
点击Yes
后,文件会打开,我收到此通知
Excel完成了文件级验证和修复。这部分内容 工作簿可能已被修复或丢弃。删除记录: 来自/xl/comments1.xml的评论部分(评论)修复记录: 来自/xl/comments1.xml部分的评论(评论)
之后,我解压缩excel文件并检查comments1.xml
。我的所有评论都存在。所有216个。
生成评论的代码部分如下
String comment = _propertiesHolder.getComment();
String commentAuthor = _propertiesHolder.getCommentAuthor();
if(comment != null)
{
int colIndex = cell.getColumnIndex();
int rowIndex = cell.getRowIndex();
CreationHelper helper = _workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(colIndex);
anchor.setCol2(colIndex + 1);
anchor.setRow1(rowIndex);
anchor.setRow2(rowIndex + 3);
// Create the comment and set the text+author
Comment cellComment = _drawingPatriarch.createCellComment(anchor);
if(commentAuthor != null)
{
cellComment.setAuthor(commentAuthor);
RichTextString rs = helper.createRichTextString(commentAuthor + ": " + comment);
cellComment.setString(rs);
}
else
{
cellComment.setString(helper.createRichTextString(comment));
}
cellComment.setRow(rowIndex);
cellComment.setColumn(colIndex);
// Assign the comment to the cell
cell.setCellComment(cellComment);
}
你知道这个问题的原因是什么吗?虽然没有丢失任何信息,但显然存在问题,我想解决它。从数据库(varchar
数据类型)检索注释。最大的评论是138个字符长。
更新
我忘了提及的东西。我也使用hssf
实现运行相同的提取,并且不存在任何错误。可以安全地假设数据不是问题。
答案 0 :(得分:0)
好的,我发现了问题。这是作者。
问题在于这一行cellComment.setAuthor(commentAuthor);
。
如果我们设置了一个评论
cellComment.setAuthor("test")
然后在另一个评论中我们设置了
cellComment.setAuthor("test ")
打开文件时会显示错误。记住空白。解决方案是在设置之前修剪作者字符串。