欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Python和xlwt向Excel文件中写入中文的实例

程序员文章站 2022-06-09 12:56:08
python等工具确实是不错的工具,但是有时候不管是基础的python还是python的软件包都让我觉得对中文不是很亲近。时不时地遇到一点问题很正常,刚刚在写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文件已经生成,具体的内容如下:

使用Python和xlwt向Excel文件中写入中文的实例

汉字写入成功。

值得注意的是,在windows下编码cp936是可以写入成功的,但是在linux中只能够用utf-8。这是个很有意思的现象,目前我还没能够想明白。

以上这篇使用python和xlwt向excel文件中写入中文的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。