python package pyExcelerator / xlwt将特殊字符写入Excel表格

任务:
我通过使用python软件包pyExcelerator(与xlwt相当)从csv-files生成了excel表格。 我需要能够写出小于或等于(≤)和大于或等于(≥)的符号。

至今:
我可以将表格保存为带有UTF-8编码的csv文件,以便我可以在我的文本编辑器中查看特殊字符,方法是将以下行添加到我的python源代码中:

#! /usr/bin/env python # -*- coding: UTF-8 -*- 

问题:
但是,在pyExcelerator的Font类中,不能selectUTF-8作为字体。 唯一的select是:

 CHARSET_ANSI_LATIN = 0x00 CHARSET_SYS_DEFAULT = 0x01 CHARSET_SYMBOL = 0x02 CHARSET_APPLE_ROMAN = 0x4D CHARSET_ANSI_JAP_SHIFT_JIS = 0x80 CHARSET_ANSI_KOR_HANGUL = 0x81 CHARSET_ANSI_KOR_JOHAB = 0x82 CHARSET_ANSI_CHINESE_GBK = 0x86 CHARSET_ANSI_CHINESE_BIG5 = 0x88 CHARSET_ANSI_GREEK = 0xA1 CHARSET_ANSI_TURKISH = 0xA2 CHARSET_ANSI_VIETNAMESE = 0xA3 CHARSET_ANSI_HEBREW = 0xB1 CHARSET_ANSI_ARABIC = 0xB2 CHARSET_ANSI_BALTIC = 0xBA CHARSET_ANSI_CYRILLIC = 0xCC CHARSET_ANSI_THAI = 0xDE CHARSET_ANSI_LATIN_II = 0xEE CHARSET_OEM_LATIN_I = 0xFF 

这些字符集中的任何一个是否包含小于或等于和大于或等于的符号? 如果是的话,哪个呢?
哪个python编码名称对应这些集合? 有没有其他的方法来产生这些特殊字符?

你可能会过问这个问题。 尽pipe字符编码可能,字体不应该发挥作用。

在任何情况下,我都可以使用xlwt创build一个excel电子表格,其中包含以下脚本,其中包含less于等于和大于等于的符号:

 import xlwt wb = xlwt.Workbook() ws = wb.add_sheet('Test Sheet') lte = u'\u2264' gte = u'\u2265' ws.write(0,0,lte+gte) wb.save('foo.xls') 

请注意, – – coding:utf-8 – – 并不是必需的,因为特殊字符是使用其unicode数字索引编码的。 一般来说,我build议尽可能使用unicode。

也可以使用utf-8并直接在Python代码中input字符。 除了input的字符外,这将完全相同:

 #-*- coding: utf-8 -*- import xlwt wb = xlwt.Workbook() ws = wb.add_sheet('Test Sheet') lte = u'≤' gte = u'≥' ws.write(0,0,lte+gte) wb.save('foo.xls') 

但是请注意,您必须使用一个编辑器,它意识到您将Python代码保存为UTF-8。 如果您的编辑器以任何其他方式对文件进行编码,那么Python解释器加载时特殊字符将不会被正确parsing。

这应该有助于使用pyexcelerator或 xlwt编写UTF-8字符:

 wb = xlwt.Workbook(**encoding='utf-8'**) 

编辑:

似乎它不适用于pyexcelerator,但我没有证实。

(1)Re:“”我可以将表格保存为UTF-8编码的csv文件,这样我可以在我的文本编辑器中查看特殊字符,在我的python源代码中添加以下行:

#! /usr/bin/env python
# -*- coding: UTF-8 -*-
“””

能够用UTF-8编码字符的文件不依赖于在写入文件的程序源代码中使用什么编码!

(2)UTF-8是一种编码,而不是一种字体。 Excel FONTlogging中的这些字符集是过去AFAIK的一个爆炸。 我还没有听说过有人认为有必要使用字符集的默认值以外的任何xlwt用户。 如Jason所示,只需要将unicode对象提供给xlwt …如果系统上有适当的字体(请参阅OpenOffice Calc中是否显示字符),则应该可以。

(3)使用pyExcelerator而不是xlwt的任何特定原因?