任务:
我使用python包pyExcelerator (与xlwt相当)从csv文件生成格式化的excel表格。我需要能够写出小于等于(≤)和大于等于(≥)的符号。
到目前为止:
我可以将表保存为使用UTF-8编码的csv文件,这样我就可以在文本编辑器中查看特殊字符,方法是将以下行添加到python源代码中:
#! /usr/bin/env python
# -*- coding: UTF-8 -*-问题:
但是,在pyExcelerator的font类中没有选择UTF-8作为字体的选项。唯一的选项是:
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编码名称对应于这些集合?有没有其他方法来生成这些特殊字符?
发布于 2009-08-28 22:19:39
你可能过多地考虑了这个问题。字体不应该在这个问题上发挥作用,尽管字符编码可能会。
在任何情况下,我都可以使用xlwt通过以下脚本创建一个带有小于等于号和大于等于号的excel电子表格:
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数字索引进行编码的。一般来说,我建议尽可能使用unicode。
也可以使用utf-8并直接在Python代码中键入字符。除了输入字符的方式不同之外,这将是完全相同的:
#-*- 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解释器加载时,将无法正确解析特殊字符。
发布于 2009-08-28 23:39:37
(1) Re:“我可以将我的表保存为UTF-8编码的csv文件,这样我就可以在我的文本编辑器中查看特殊字符,方法是将以下行添加到我的python源代码中:
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
""“
是否能够使用UTF-8编码的字符写入文件并不取决于写入该文件的程序源代码中使用的编码方式!
(2) UTF-8是一种编码,而不是字体。Excel字体记录中的这些字符集是从过去的AFAIK中引爆的。我还没有听到任何xlwt用户认为有必要使用字符集的默认值以外的值。只需将unicode对象提供给xlwt,如Jason所示……如果您的系统中有适当的字体(请查看是否可以在OpenOffice计算中显示字符),您应该可以使用。
(3)使用pyExcelerator而不是xlwt有什么特殊原因?
https://stackoverflow.com/questions/1342402
复制相似问题