2017-04-04 5 views
1

xlsxwriterモジュールを使用してExcelファイルを作成して書きます。しかし、Excelファイルを開くと、次のようなポップアップが表示されます。Python xlsxwriter修復されたレコード:/xl/sharedStrings.xmlの文字列プロパティ(文字列)

We found a problem with some content in 'excel_sheet.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes. [はい]をクリックすると、Repaired Records: String properties from /xl/sharedStrings.xml part (Strings)と表示されます。

これは、私がwrite_rich_stringを使用して書き込んだセルのために発生することがわかりました。

my_work_sheet.write_rich_string(row_no, col_no,format_1, "Some text in format 1", format_2, "Text in format 2", format_1, "Again in format 1")

私は、これは発生しませんwrite_stringを使用して、それを記述する場合。 format_1およびformat_2には、フォント名、色、サイズ、垂直方向の配置が設定されています。

誰もがここで間違っていると示唆できますか?

答えて

2

私は(@ jmcnamaraに感謝します)問題を再現しようとしていましたが、どこが間違っているのか分かりました。

write_rich_stringへの私のコマンドでは、時には空の文字列をフォーマットしようとしていました。

my_work_sheet.write_rich_string(row_no, col_no,format_1, string_1, format_2, string_2, format_1, string_3)

私は時間のいくつかの点でstring_1の中の1つ、string_2string_3の値が''なったことを知っているようになりました。現在は、write_rich_stringは、''でないことを確認してから使用します。

+1

私はXlsxWriterでこれについて[バグレポートの問題](https://github.com/jmcnamara/XlsxWriter/issues/425)を提出しました。 – jmcnamara

0

一般に、「コンテンツに問題が見つかりました」というエラー/警告は、xlsxファイルのコンポーネントファイルの1つにXML要素または属性が不正な形式で存在することを意味します。一般的に言えば、これは、XlsxWriterにバグがあること、または何らかの方法でユーザー入力をサニタイズできなかったことを意味します。

しかし、この特定のケースでは、問題が何であるかを判断するのに十分な情報がありません。私はあなたのコードスニペットを取り出し、それをテストプログラムに変換し、期待どおりに動作します。

import xlsxwriter 

workbook = xlsxwriter.Workbook('rich_strings.xlsx') 
my_work_sheet = workbook.add_worksheet() 

my_work_sheet.set_column('A:A', 50) 

format_1 = workbook.add_format({'color': 'red'}) 
format_2 = workbook.add_format({'color': 'blue'}) 

my_work_sheet.write_rich_string(0, 0, 
           format_1, "Some text in format 1 ", 
           format_2, "Text in format 2 ", 
           format_1, "Again in format 1") 

workbook.close() 

出力:

example image

だから、あなたは、上記のような小さな自己完結型のプログラムを作成し、XlsxWriter projecta bug reportを提出する必要があります。

+0

私は、指定されたコードスニペットが問題を再現できないことを認めますが、エラーメッセージは 'write_rich_string'を使用した場合にのみポップアップします。提案していただきありがとうございます! – Sohn

+0

そして、私はExcelのエラーが存在し、XlsxWriterのバグ(私は作者btwです)を受け入れることはできますが、それを再現できない場合は解決できないか回避策を提供できないことに同意します。したがって、問題を小さく再現性のあるプログラムに減らすようにしてください。そうすれば、私はそれを調べて修正することができます。さもなければ、この質問はおそらく未回答になるでしょう。 – jmcnamara