2016-10-20 29 views
1

私たちは、perlスクリプトを使ってxlsxファイルを生成しています。ファイルには通常、何千ものレコードが含まれます。これはスポットエラーを非常に困難な操作にします。 このプロセスは何年も問題なく動作していました。
今週は、エラーが含まれているファイルをチェックする要求がありました。 Excelを開くと、ファイルにエラーが含まれているかどうかが確認され、修復するかどうか尋ねられました。実際に
enter image description here 我々はデータを回復したいが破損しているファイルのどの部分を知っている必要はありません。エラーは破損したデータから発生するはずであり、私たちはこれらのデータを識別することに興味があります。 ログメッセージには、次のことを示しています
xlsxファイルの破損データを見つけよう

<?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> 

エラーが破損したデータから来る必要があります。この破損したデータを見つけ出すのに役立つツール/方法はありますか? XMLファイルの名前をzipファイルに変更してみましたが、XMLエディタで開くとXMLファイルにエラーが見つかりませんでした。
また、さまざまなXMLファイル構造が適切であることも確認しました。予想通り

は、あなたとよろしく

+1

問題の説明は非常に曖昧です。 – simbabque

+0

私は少なくとも、XLSXファイルをどのように生成しているのかを知る必要があると思います。実行可能な最小限の例を教えてください。 –

+0

特定のバージョンのExcelでこの問題が発生しているかどうかを確認しましたか?最近誰かがそれを知らずにあなたのスクリプトを変更しましたか?使用しているPerlモジュールを更新しましたか?最近、別のソースからデータを取得し始めましたか?可能であれば、 "/xl/worksheets/sheet1.xml"を生成するコードを無効にしてみてください。あなたはまだ問題を抱えていますか? – benrifkah

答えて

1


ありがとう、問題が途中でEを持つ数値を含むテキスト細胞から来ていました。
私は以下の手順を使用して、エラーのあるセルを特定しました。
1.小さなJavaクラスでファイルを読み取りました。クラスは、セルタイプをチェックし、その後に値を表示していました。
コンテンツを表示する前にセルタイプを正しく確認していても、javaプログラムが「テキストセルから数値を取得できません」という行で例外を生成しました。
2.開いたExcelファイルをその行で確認したところ、セルには「inf」のみが含まれていました。
3. open officeを使用してファイルを開き、同じセルを調べました。彼らは0.
を含んでいます。4.データを生成するプログラムをデバッグし、これらのセルに '914E5514'のようなデータが含まれていることがわかりました。 Excelが指数として解釈したEと思われる。
プログラムを、そのセルに '@'形式を使用するように変更しました。これで問題が解決しました。
ありがとうございます。

関連する問題