DBから漢字のデータを取得し、データをxlwtでExcelに書き込み
ます。コードは次のとおりです。
ws0.write(0,0, unicode(cell, 'big5'))
Windowsでは問題ありませんが、Linuxで使用しなかった場合、Excelのデータが文字化け
しました。手伝ってもらえますか?
実際に実行したコードを投稿していただけると助かります。ws0
がオブジェクトであると仮定するとWorksheet
、正しい構文はws0.write(row_index, column_index, unicode_text)
.
とは何cell
を参照していて、どのデータベースからどのように抽出したのですか?
「エクセルのデータが文字化け」とは?Linux で XLS ファイルの内容を表示するために何を使用していますか? 画面で実際に見たものは何ですか?他のソフトウェアを使用して Linux で漢字を正しく表示できますか?
Linux の Python インタラクティブ プロンプトで次のように入力してみてください。
>>> import xlwt
>>> b = xlwt.Workbook()
>>> s = b.add_sheet('zh')
>>> big5_text = '\xa7A\xa6n\xa1I'
>>> u_text = big5_text.decode('big5')
>>> s.write(0, 0, u_text)
>>> b.save('nihao.xls')
次に、OpenOffice Calc で XLS ファイルを開いてみてください...何が表示されますか?
アップデート
(1) 「実行したコード」は 1 行以上である必要があります。見せてください。
(2) 私があなたに与えた小さなコードを実行して、結果を報告してください。それがうまくいけば、どのデータベースからどのデータをどのように取得しているかなどに集中できます [その質問にも答えてください]
(3) Linux での中国語表示についての質問にお答えください。
(4) 「???」を見たことを考える 中国語 (または何でも) の文字の代わりに、通常、unicode_text.encode('some_encoding', 'replace')
不適切なエンコーディング (たとえば、「ascii」) を使用した (または同じ意図を持つ他のコード)の結果です。xlwt はunicode_text.encode()
、Unicode 文字列をファイルに保存します。エンコーディングには必要に応じて 'latin1' または 'utf_16le' を使用し、次の引数には 'replace' ではなく 'strict' を使用します。Excel で "???" が表示されている場合は、xlwt に入力する前にデータが既に文字化けしている可能性があります。何print repr(cell)
を教えてくれますか?
(5) 同じバージョンの xlwt と Python を同じ入力データと同じ Python スクリプトで実行すると、Linux からの出力ファイルは、Windows からの出力ファイルとバイト単位で同じになります。xlwt と Python のバージョンの違いによって、ファイルが異なる可能性はほとんどありません。提供した短いスクリプトから生成されたファイルを、バイナリ比較 (たとえば、fc /b ...
Windows の「コマンド プロンプト」ウィンドウ) を使用して比較してください。各環境で使用している Python と xlwt のバージョンを記載してください。
(6) xlwt の質問については、通常のフォーラムに切り替えることを検討してください... そうすれば、必要に応じて参照するファイルを簡単に送信できます。また、新しい投稿が行われると、ポーリングする代わりに電子メールを受け取ることができます。時々ウェブサイト...