以下は Python と xlwt を使用して Excel ファイルに中国語を書き込む例です。これは非常に参考になるので、皆さんのお役に立てれば幸いです。一緒に見に来てください
Python やその他のツールは確かに優れたツールですが、基本的な Python であっても Python ソフトウェア パッケージであっても、自分が中国語にあまり近づいていないように感じることがあります。時々問題が発生するのは普通のことですが、Excel ファイルを作成しているときに再びそのような問題が発生しました。
状況を説明するために、現在のフォルダー内のすべてのファイル名を Excel ファイルに書き込みたいとします。
カレントディレクトリの情報は以下の通りです:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/02_blog/2017年/08月$ ls -l total 1464 -rwxrwxrwx 1 rootroot 13067 Aug 20 18:58 as86汇编程序的编译与链接.docx -rwxrwxrwx 1 rootroot 13794 Aug 8 22:07 C语言中access函数的使用.docx -rwxrwxrwx 1 rootroot 13285 Aug 8 23:08 C语言中合并字符串.docx -rwxrwxrwx 1 rootroot 15514 Aug 8 23:28 C语言中的动态内存分配.docx -rwxrwxrwx 1 rootroot 13765 Aug 8 23:43 GNU glibc中对C语言标准库中动态内存管理的改进.docx -rwxrwxrwx 1 rootroot 14450 Aug 8 22:37 GNU glibc库中函数执行成功与失败的返回值.docx -rwxrwxrwx 1 rootroot 13485 Aug 20 14:51 Linux 0.12的任务调度猜测.docx -rwxrwxrwx 1 rootroot 11934 Aug 20 13:20 Linux BIOS启动.docx -rwxrwxrwx 1 rootroot 13349 Aug 20 19:38 Linux中dd命令的使用.docx -rwxrwxrwx 1 rootroot 13802 Aug 20 19:20 Linux中使用dd命令修改as86汇编编译链接后的程序.docx -rwxrwxrwx 1 rootroot 15118 Aug 20 16:47 Linux启动代码boot.s理解.docx -rwxrwxrwx 1 rootroot 16005 Aug 20 14:25 Linux操作系统的BIOS启动流程.docx -rwxrwxrwx 1 rootroot 14755 Aug 20 01:29 Linux的proc文件系统.docx -rwxrwxrwx 1 rootroot 12777 Aug 1 23:50 mot文件的单行校验与全局校验.docx -rwxrwxrwx 1 rootroot 131404 Aug 13 14:50 Office 2016 Excel实现下拉栏.docx -rwxrwxrwx 1 rootroot 86665 Aug 19 11:44 Office 2016中修改正文默认字体.docx -rwxrwxrwx 1 rootroot 113476 Aug 9 21:07 PPT中修改已插入对象的图标.docx -rwxrwxrwx 1 rootroot 13636 Aug 16 22:23 Python2与Python3中__bool__方法的差异.docx -rwxrwxrwx 1 rootroot 13924 Aug 1 23:32 Python2与Python3中除法功能的异同.docx -rwxrwxrwx 1 rootroot 14551 Aug 16 23:09 Python2与Python3在不同类的对象比较上的差异.docx -rwxrwxrwx 1 rootroot 14101 Aug 12 10:30 Python abc模块的几个小知识点.docx -rwxrwxrwx 1 rootroot 13581 Aug 9 23:24 Python OOP容器设计时合理引入列表方法.docx -rwxrwxrwx 1 rootroot 12890 Aug 12 14:29 Python中isinstance用法.docx -rwxrwxrwx 1 rootroot 13899 Aug 9 22:46 Python中list的extend方法.docx -rwxrwxrwx 1 rootroot 13142 Aug 18 02:22 Python中__new__方法的使用.docx -rwxrwxrwx 1 rootroot 13280 Aug 20 23:17 Python中使用property实现类的特性.docx -rwxrwxrwx 1 rootroot 13257 Aug 16 22:39 Python中定制类的比较运算方法.docx -rwxrwxrwx 1 rootroot 13897 Aug 18 22:45 Python中最基础类的属性和信息.docx -rwxrwxrwx 1 rootroot 13567 Aug 19 11:53 Python中的@classmethod用法.docx -rwxrwxrwx 1 rootroot 14859 Aug 12 15:32 Python中的join函数用法.docx -rwxrwxrwx 1 rootroot 13832 Aug 18 01:38 Python中的weakref简单小结.docx -rwxrwxrwx 1 rootroot 13314 Aug 16 20:51 Python中的哈希常识小结.docx -rwxrwxrwx 1 rootroot 13822 Aug 12 19:15 Python中的静态函数用法.docx -rwxrwxrwx 1 rootroot 15223 Aug 11 00:12 Python中@符号的用法-1.docx -rwxrwxrwx 1 rootroot 162 Aug 21 23:20 ~$Python和xlwt向Excel文件中写入中文.docx -rwxrwxrwx 1 rootroot 13519 Aug 10 20:01 Python实现接受任意个数参数的函数.docx -rwxrwxrwx 1 rootroot 15114 Aug 19 20:31 Python实现更相减损术求解最大公约数.docx -rwxrwxrwx 1 rootroot 13425 Aug 10 22:51 Python编程中NotImplementedError的使用.docx -rwxrwxrwx 1 rootroot 13345 Aug 20 22:27 Python通过属性手段实现只允许调用一次的方法.docx -rwxrwxrwx 1 rootroot 13586 Aug 19 11:15 Python面向对象编程中属性的基本操作.docx -rwxrwxrwx 1 rootroot 139264 Aug 2 23:50 Simulink解析带有系数和偏移量的CAN报文信息.docx -rwxrwxrwx 1 rootroot 13542 Aug 19 17:22 TAOCP中1.1习题1解答与思考.docx -rwxrwxrwx 1 rootroot 13683 Aug 19 16:05 TAOCP中最大公约数算法理解.docx -rwxrwxrwx 1 rootroot 13539 Aug 20 18:41 Ubuntu上安装as86汇编器.docx -rwxrwxrwx 1 rootroot 203890 Aug 12 14:20 Windows10安装bash.docx -rwxrwxrwx 1 rootroot 258 Aug 21 23:19 xlwt_demo.py -rwxrwxrwx 1 rootroot 13353 Aug 18 02:07 使用__del__方法在Python文件处理时保证文件关闭.docx -rwxrwxrwx 1 rootroot 127142 Aug 7 21:07 使用PolySpace进行模型的检测.docx -rwxrwxrwx 1 rootroot 12430 Aug 21 23:22 使用Python和xlwt向Excel文件中写入中文.docx -rwxrwxrwx 1 rootroot 13303 Aug 19 19:06 辗转相除法求最大公约数.docx
このうち、xlwt_demo.pyは予め書かれたPythonスクリプトで、コードは以下の通りです:
#!/usr/bin/python # -*- coding-cp936-*- import os import xlwt from xlwt importWorkbook book = Workbook() sheet1 =book.add_sheet('list') row_num = 0 for f inos.listdir('.'): sheet1.write(row_num,0,f) row_num += 1 book.save('demo.xls')
プログラムの実行結果:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/02_blog/2017年/08月$ python xlwt_demo.py Traceback (mostrecent call last): File "xlwt_demo.py", line 14, in<module> book.save('demo.xls') File"/usr/local/lib/python2.7/dist-packages/xlwt/Workbook.py", line 710,in save doc.save(filename_or_stream,self.get_biff_data()) File"/usr/local/lib/python2.7/dist-packages/xlwt/Workbook.py", line 674,in get_biff_data shared_str_table = self.__sst_rec() File"/usr/local/lib/python2.7/dist-packages/xlwt/Workbook.py", line 636,in __sst_rec return self.__sst.get_biff_record() File"/usr/local/lib/python2.7/dist-packages/xlwt/BIFFRecords.py", line77, in get_biff_record self._add_to_sst(s) File"/usr/local/lib/python2.7/dist-packages/xlwt/BIFFRecords.py", line92, in _add_to_sst u_str = upack2(s, self.encoding) File"/usr/local/lib/python2.7/dist-packages/xlwt/UnicodeUtils.py", line50, in upack2 us = unicode(s, encoding) UnicodeDecodeError:'ascii' codec can't decode byte 0xe6 in position 4: ordinal not in range(128)
上記のプロンプトからわかるように、このツールはデフォルトで ASCII コードをサポートしています。コードの先頭でエンコード形式を指定したにもかかわらず、依然として問題が発生しました。そうであれば、xlwt には特殊な使用法があるはずです。 ドキュメントを確認した結果、変更されたコードは次のとおりです:
#!/usr/bin/python # -*- coding:cp936 -*- import os import xlwt from xlwt importWorkbook book =Workbook(encoding='utf-8') sheet1 =book.add_sheet('list') row_num = 0 for f inos.listdir('.'): sheet1.write(row_num,0,f) row_num += 1 book.save('demo.xls')
プログラムの実行結果は次のとおりです:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/ 02_blog/2017/08 $ python xlwt_demo.py
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/02_blog/2017/08$ ls
as86 Assemblyler.docx のコンパイルとリンク プロパティを使用したクラス特性の実装Pythonで.docx
C言語でアクセス関数の使い方.docx Pythonでカスタマイズしたクラスの比較演算方法.docx
C言語で文字列を結合する.docx Pythonで最も基本的なクラスの属性と情報.docx
Cで言語 動的メモリ割り当て.docx Python.docx での @classmethod の使用法
demo.xls Python.docx での結合関数の使用法
GNU の C 言語標準ライブラリにおける動的メモリ管理の改善 glibc.docx Python のweakref の簡単な概要.docx
GNU glibc ライブラリの関数実行の成功と失敗の戻り値.docx Python のハッシュに関する常識のまとめ.docx
Linux 0.12 のタスク スケジューリングについての推測.docx Python での静的関数の使用法.docx
Linux BIOS の起動 .docx Python-1 での @ 記号の使用法.docx
Linux での dd コマンドの使用.docx ~$Python と xlwt は中国語を Excel ファイルに書き込みます。docx
Linux で dd コマンドを使用して、コンパイルされた as86 アセンブリを変更します。リンクされた Program.docx Python は、任意の数のパラメータを受け入れる関数を実装します。docx
Linux スタートアップ コード boot.s の理解.docx Python は、最大公約数を解決するための位相減算手法を実装します。docx
Linux オペレーティング システムの BIOS 起動プロセス.docx Python プログラミング NotImplementedError の使用.docx
Linux proc ファイル システム.docx Python は属性を使用して、一度しか呼び出すことができないメソッドを実装します。docx
mot ファイルの単一行検証とグローバル検証.docx の基本Python オブジェクト指向プログラミングにおける属性の操作.docx
Office 2016 Excel はドロップダウン バーを実装します。docx Simulink は係数とオフセットを使用して CAN メッセージ情報を解析します。docx
Office 2016 テキストの既定のフォントを変更します。docx 回答と感想1.1 について TAOCP.docx の演習 1
PPT.docx で挿入されたオブジェクトのアイコンを変更する TAOCP.docx の最大公約数アルゴリズムを理解する
Python2 と Python3.docx の __bool__ メソッドの違い Ubuntu への as86 アセンブラのインストール.docx
Python2 と Python3 の分割 関数の類似点と相違点.docx Windows 10 のインストール bash.docx
異なる種類のオブジェクトの比較における Python2 と Python3 の違い.docx 処理中にファイルが閉じられていることを確認する.docx
紹介Python OOP コンテナを設計するときに list メソッドを適切に使用する.docx モデル検出に PolySpace を使用する.docx
Python での isinstance の使用方法.docx Python と xlwt を使用して Excel ファイルに中国語を書き込む.docx
Python の list の extend メソッド。 docx 最大公約数を求めるユークリッド除算法.docx
Python での __new__ メソッドの使用法.docx
Excel ファイルが生成されました。具体的な内容は次のとおりです:
漢字は正常に書き込まれました。
エンコーディング cp936 は Windows では正常に記述できますが、Linux では utf-8 のみが使用できることに注意してください。これは非常に興味深い現象ですが、私はまだ解明できていません。
関連する推奨事項:
以上がPython と xlwt を使用して中国語を Excel ファイルに書き込むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。