使用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汇编程序的编译与链接.docx python中使用property实现类的特性.docx
c语言中access函数的使用.docx python中定制类的比较运算方法.docx
c语言中合并字符串.docx python中最基础类的属性和信息.docx
c语言中的动态内存分配.docx python中的@classmethod用法.docx
demo.xls python中的join函数用法.docx
gnu glibc中对c语言标准库中动态内存管理的改进.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汇编编译链接后的程序.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 taocp中1.1习题1解答与思考.docx
ppt中修改已插入对象的图标.docx taocp中最大公约数算法理解.docx
python2与python3中__bool__方法的差异.docx ubuntu上安装as86汇编器.docx
python2与python3中除法功能的异同.docx windows10安装bash.docx
python2与python3在不同类的对象比较上的差异.docx xlwt_demo.py
python abc模块的几个小知识点.docx 使用__del__方法在python文件处理时保证文件关闭.docx
python oop容器设计时合理引入列表方法.docx 使用polyspace进行模型的检测.docx
python中isinstance用法.docx 使用python和xlwt向excel文件中写入中文.docx
python中list的extend方法.docx 辗转相除法求最大公约数.docx
python中__new__方法的使用.docx
excel文件已经生成,具体的内容如下:
汉字写入成功。
值得注意的是,在windows下编码cp936是可以写入成功的,但是在linux中只能够用utf-8。这是个很有意思的现象,目前我还没能够想明白。
以上这篇使用python和xlwt向excel文件中写入中文的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。