在 xlsx 文件中查找损坏的数据
Posted
技术标签:
【中文标题】在 xlsx 文件中查找损坏的数据【英文标题】:Find corrupt data in xlsx file 【发布时间】:2016-10-20 15:06:32 【问题描述】:我们正在使用 perl 脚本生成 xlsx 文件。文件通常包含数千条记录。这使得发现错误成为一项非常困难的操作。 这个过程多年来一直没有问题。 本周我们收到了检查包含错误的文件的请求。打开 Excel 时提示文件包含错误,并询问我们是否要修复它们。 事实上,我们不想恢复数据,而是想知道文件的哪一部分损坏了。错误应该来自损坏的数据,我们有兴趣识别这些数据。 日志消息显示以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error068200_01.xml</logFileName> </br>
<summary>Errors were detected in file 'D:\Temp\20161020\file_name.xlsx'</summary>
<repairedRecords summary="Following is a list of repairs:"><repairedRecord>Repaired Records: Cell information from /xl/worksheets/sheet1.xml part</repairedRecord>
</repairedRecords>
</recoveryLog>
错误应该来自损坏的数据。是否有任何工具/方法可以帮助发现这些损坏的数据? 我尝试将其重命名为 zip 文件,将其解压缩并通过 XML 编辑器打开,但无法在 XML 文件中找到任何错误。 我们还检查了不同的 XML 文件结构是否正常。
谢谢你和最好的问候
【问题讨论】:
你对问题的描述很模糊。 我认为至少我们需要知道您是如何生成 XLSX 文件的。您能给我们一个可以运行的最小示例吗? 您是否检查过此问题是否仅在某些版本的 Excel 上发生?最近有人在您不知情的情况下更改了您的脚本吗?它使用的任何 Perl 模块是否已更新?您最近是否开始从其他来源获取数据?如果可能,请尝试禁用生成“/xl/worksheets/sheet1.xml”的代码。你还有问题吗? >您是否检查过此问题是否仅在某些版本的 Excel 上发生? 【参考方案1】:正如预期的那样,问题来自包含数字的文本单元格,中间有一个 E。我使用以下步骤来识别错误的单元格。 1.编写小Java类来读取文件。该类正在检查单元格类型并随后显示该值。即使我在显示内容之前正确检查了单元格类型,Java 程序也会在“无法从文本单元格中获取数值”的某行生成异常。 2. 我在该行检查了打开的 Excel 文件,发现单元格只包含“inf”。 3. 我使用 open office 打开文件并查看了相同的单元格。它们包含 0。 4.我调试了生成数据的程序,发现这些单元格包含像'914E5514'这样的数据。似乎 E 被 Excel 解释为指数。我们将程序更改为对该单元格使用格式“@”,这解决了问题。 谢谢。
【讨论】:
【参考方案2】:非常感谢,您说 1 个特定的内容项可能是根本问题,这对我帮助很大。
我损坏的内容是https://www.example.com XYZ ... ASDAS
解决方案:www.example.com XYZ ... ASDAS
这是excel无法处理的。有一个不起作用的东西的清单会很高兴
【讨论】:
以上是关于在 xlsx 文件中查找损坏的数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 MS Access VBA 在 .xlsx 文件中插入一行...如何避免损坏文件?