您的位置:首页 > 编程语言 > Python开发

Python读取excel写入到RTF文件

2013-05-16 21:26 986 查看
用到的python包:

1.python读取excel的包,xlrd 下载地址https://pypi.python.org/pypi/xlrd

2.python将数据写入到RTF文件所用到的包PyRTF 下载地址:http://sourceforge.net/projects/pyrtf/

实际用的时候,将xlrd包和PyRTF包安装好后,在用xlrd读excle的时候没遇到什么问题,但是在用PyRTF包将读出的单元格的数据写入到rtf文件后,打开自动生成的文件后发现里面除了数字是正确的之外,其余全是乱码。主要问题为:

(1)写入时采用的字体的问题

因为PyRTF默认的是arial字体,我们将从excel读出的汉字如果用PyRTF默认的arial字体写入到文件后,就会出现乱码,解决方法,就是加入汉字字体,下面为一例子

(引自网络)

import sys

sys.path.append( '../' )

from PyRTF import *

doc = Document()

ss = doc.StyleSheet

# 在这里加入中文字体,\xcb\xce\xcc\xe5是“宋体”的中文内码

ss.Fonts.append(Font("\\'cb\\'ce\\'cc\\'e5", 'modern', 134, 6))

section = Section()

doc.Sections.append(section)

# 得到这个字体

tps = TextPS(font=getattr(ss.Fonts, "\\'cb\\'ce\\'cc\\'e5") ,bold=True)

# 设置颜色

sps = ShadingPS(background=ss.Colours.Pink)

text = Text('中国123'+'你好!@#', tps, sps)

p = Paragraph()

p.append(text)

section.append(p)

DR = Renderer()

out = file('bb.rtf','w')

DR.Write(doc, out)

out.close()

(2)字符编码的问题

我们用xlrd从excel表格中读出的汉字都是unicode编码格式(可以把读出的结果输出一下,可以看到每个汉字都是以utf-8编码显示的),如果我们不进行编码转换,直接写入到rtf文件的话就会出现乱码(我看了一下,自动生成的rtf文件都是ascII编码),所用对从excel中读出的汉字进行编码转换即可解决问题(将utf-8编码转为cp936编码)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: