0

DBから漢字のデータを取得し、データをxlwtでExcelに書き込み
ます。コードは次のとおりです。

ws0.write(0,0, unicode(cell, 'big5'))

Windowsでは問題ありませんが、Linuxで使用しなかった場合、Excelのデータが文字化け
しました。手伝ってもらえますか?

4

1 に答える 1

0

実際に実行したコードを投稿していただけると助かります。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 の質問については、通常のフォーラムに切り替えることを検討してください... そうすれば、必要に応じて参照するファイルを簡単に送信できます。また、新しい投稿が行われると、ポーリングする代わりに電子メールを受け取ることができます。時々ウェブサイト...

于 2010-04-25T15:13:33.417 に答える