python包pyExcelerator/x将特殊字符写入excel表

2024-05-18 02:49:00 发布

您现在位置:Python中文网/ 问答频道 /正文

任务:
我使用python包pyExcelerator(与xlwt类似)从csv文件生成格式化的excel表。我需要能够写小于或等于(≤)和大于或等于(≥)的符号。

到目前为止:
我可以用UTF-8编码将表保存为csv文件,这样就可以在文本编辑器中查看特殊字符,方法是在python源代码中添加以下行:

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

问题:
但是,在pyExcelerator的字体类中没有选择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编码名称对应于这些集合? 有没有其他方法生成这些特殊字符?


Tags: 文件csv方法编码字体符号utfansi
3条回答

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

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

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

(2)UTF-8是一种编码,而不是一种字体。Excel字体记录中的那些字符集是来自过去的AFAIK。我没有收到任何xlwt用户的来信,他们认为除了字符集的默认值之外,还必须使用其他字符集。只需将unicode对象馈送到xlwt,如Jason所示。。。如果您的系统中有合适的字体(请查看是否可以在OpenOffice Calc中显示字符),您应该可以。

(3)使用pyExcelerator代替xlwt的特殊原因?

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

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

编辑:

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

你可能想得太多了。字体不应该影响这件事,尽管字符编码可能。

在任何情况下,我都可以使用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')

注意--编码: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解释器加载时将无法正确解析特殊字符。

相关问题 更多 >