6

任务:
我使用 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 编码名称对应于这些集合?还有其他方法可以生成这些特殊字符吗?

4

3 回答 3

5

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

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

编辑:

似乎它不适用于 pyexcelerator,但我尚未确认。

于 2010-03-19T13:31:24.147 回答
4

你可能想多了这个问题。尽管字符编码可能,但字体不应该参与其中。

在任何情况下,我都能够使用 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-28T22:19:38.800 回答
1

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

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

能够用 UTF-8 编码的字符编写文件并不取决于写入文件的程序源中使用的编码!

(2) UTF-8 是一种编码,不是字体。Excel FONT 记录中的那些字符集是过去 AFAIK 的一次爆炸。我没有收到任何 xlwt 用户的消息,他们认为有必要使用默认字符集以外的字符集。只需将 unicode 对象提供给 xlwt,正如 Jason 所演示的那样……如果您的系统上有合适的字体(看看您是否可以在 OpenOffice Calc 中显示这些字符),您应该没问题。

(3) 使用 pyExcelerator 代替 xlwt 有什么特别的原因吗?

于 2009-08-28T23:39:36.863 回答