我具有使用Apache POI将内容下载到xls文件的功能。通常,它可以工作。但是在一个特定的数据库上,生成的文件已损坏,无法在Excel中打开。我收到消息“我们在'DownloadFoo.xls'中发现某些内容有问题。是否要我们尝试尽可能多地恢复?如果您信任此工作簿的来源,请单击“是”。 。单击“是”将删除所有格式,数据验证等内容。另一方面,如果我在Open Office Calc中打开文件并保存,就可以了,以后可以在Excel中打开它。 (不允许使用这些文件的人下载Open Office Calc,因此这不是可接受的解决方法。)
我尝试缩小范围以查看导致问题的数据,但是无论何时下载10个或更多项目,无论它们是什么项目,它似乎都会发生。 (在其他数据库上,可以下载100多个)。排除一些列是有帮助的,但是它们看起来是无害的(几乎与其他很好的列相同),所以这仍然使我无所适从。
我有什么技术可以用来找出损坏的电子表格中哪些Excel存在问题?
我无法进行重大更改,例如将其下载到xlsx,因为此功能将在不久的将来被取消并替换为完全不同的功能,因此,我只想关注当前的问题。
答案 0 :(得分:0)
事实证明,解决该问题的方法是更频繁地重置数据验证列表。电子表格中的很多单元格都具有数据验证功能。数据验证列表较长时,它们存储在隐藏的工作表中。如果几个单元格需要相同的验证,我尝试让它们引用相同的列表,以免在隐藏的工作表上写出过多的内容。但是,当太多单元格引用同一列表时,Excel显然不喜欢它-就我所知,这并不违反规则,但无论如何它还是不喜欢它。当我更改它以重写每5个项目的验证列表时,它开始工作。
该数据库与其他数据库不同的原因是,这些项目具有异常多的子项目,因此即使看起来好像没有下载多少东西,它们也占据了很多行。有些问题列仅具有true或false的验证,而不是使用隐藏工作表上的列表,因此我不知道那是什么,但是无论如何重置验证列表还是有帮助的。
这并没有真正回答我的问题,因为我从未设法从Excel中获得有关问题所在的任何信息,或者使用特定技术,但这只是一系列巧合的发现。我还是把它放在这里,以防其他人有类似的问题。同样让我走上正轨的是,在仔细检查了10条以上的内容(对安德鲁·莫顿的评论没有什么不同)时,我发现了一条旧评论,所以感谢安德鲁!