You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用openpyxl设置Excel UTF-8编码及解决工作表名显示异常问题

嘿,我来帮你搞定这两个openpyxl相关的问题:

问题1:如何为Excel文件设置UTF-8编码?

其实你可能有点误解——xlsx格式(也就是openpyxl专门处理的格式)本身是基于OOXML标准的,内部默认就用UTF-8编码存储文本内容,所以不需要额外给Excel文件手动设置UTF-8编码。

如果是你在读取或写入时遇到字符乱码,那大概率是终端或输出环境的编码问题,而非Excel文件本身的编码问题。比如在Python 2中,终端默认编码可能不是UTF-8,这时候你需要确保输出字符串的编码和终端匹配。举个例子,打印Unicode字符串时可以先编码成UTF-8:

print my_unicode_string.encode('utf-8')
问题2:如何让工作表名正常显示为Février?

先看你的输出[u'Janvier ', u'F\xe9vrier']——这是Python 2里的Unicode字符串表示:u前缀说明这是Unicode类型,\xe9是字符é的Unicode码点(U+00E9)的十六进制转义形式。它本质上就是正确的Février,只是Python 2默认打印Unicode字符串时会显示转义字符,而非直接展示对应的符号。

这里有两种简单的解决方法:

  • 方案1:把Unicode字符串编码成UTF-8再打印,遍历工作表名的话可以这么写:
    sheet_names = self.classeur.get_sheet_names()
    for name in sheet_names:
        print name.encode('utf-8')
    
  • 方案2:如果你的终端支持UTF-8编码,也可以在代码开头添加以下内容,修改Python的默认输出编码:
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    这样后续打印Unicode字符串时会自动转成UTF-8输出,就能直接看到Février了。

另外,要是能升级到Python 3会更省心——Python 3里默认字符串就是Unicode,只要终端编码是UTF-8,打印时就会直接显示正确的字符,不会出现这种转义情况。

内容的提问来源于stack exchange,提问作者Julie Levesque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:35:29