在xlsx文件

时间:2016-10-20 15:06:32

标签: perl xlsx corrupt

我们使用perl脚本生成xlsx文件。文件通常包含数千条记录。这使得定位误差成为非常困难的操作。 这个过程多年来一直没有问题 本周我们收到了检查包含错误的文件的请求。打开Excel时提示该文件包含错误,并询问我们是否要修复它们 enter image description here 实际上,我们不想恢复数据,但想知道文件的哪个部分已损坏。错误应该来自损坏的数据,我们有兴趣识别这些数据。 日志消息显示以下内容:

<?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文件结构。

谢谢你,以及最好的问候

2 个答案:

答案 0 :(得分:1)

如预期的那样,问题来自包含中间带有E的数字的文本单元。
我使用以下步骤来识别错误的单元格。
1.编写小型Java类来读取文件。该类正在检查单元格类型并在之后显示该值。
java程序在某行“无法从文本单元格中获取数值”生成异常,即使我在显示内容之前正确检查了单元格类型。
2.我在该行检查了打开的Excel文件,发现该单元格仅包含“inf” 我用开放式办公室打开文件,看着同样的细胞。它们包含0.
我调试了生成数据的程序,发现这些单元格包含的数据如'914E5514'。似乎E被Excel解释为指数。
我们将程序更改为使用该单元格的格式'@',这解决了问题。
谢谢。

答案 1 :(得分:0)

非常感谢,您说了一个特定的内容项可能是根本问题,对我有很大帮助。

我损坏的内容为https://www.example.com XYZ ... ASDAS 解决方案:www.example.com XYZ ... ASDAS

这是excel无法处理的。列出不起作用的东西会很好