python 修改excel表格的问题

利用python打开一个已有的excel表格,并对其进行修改,然后再保存遇到下面的问题:已有的excel表格中有中文数据,修改excel表格时会有新的中文数据写入,直接创... 利用python打开一个已有的excel表格,并对其进行修改,然后再保存遇到下面的问题:
已有的excel表格中有中文数据,修改excel表格时会有新的中文数据写入,
直接创建一个excel表写入中文数据没有问题,
book = xlwt.Workbook(encoding = "utf-8")
sheet = book.add_sheet(sheetname)
...
book.save(...)
读取excel表格中的中文数据没有问题,
修改excel表格,写入新数据(英文)没有问题,
修改excel表格,写入新数据(中文),在保存时会报错
rb = open_workbook(excelname,formatting_info=True)
rs = rb.sheet_by_index(0)
book = copy(rb)
book.encoding = "utf-8" #加了这个也不行
sheet = book.add_sheet(sheetname)
...... #此处为写操作,写入中文数据
book.save(excelname)
报错如下:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)”
快疯了,弄不出来
应该是编码问题,可是不会解决啊
展开
 我来答
我心我在
2015-05-13 · TA获得超过2157个赞
知道小有建树答主
回答量:784
采纳率:77%
帮助的人:629万
展开全部
把你的写入excel 的内容编码一哈
例如
str('内容').encode('utf-8') 或者str('内容').encode('gbk')
再写入excel 试试
追问
可以试试,关键是这部分是之前写好的封装在函数里的,这样的改动比较费劲。。。有没有更好的办法可以直接修改excel呢?
追答

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from pyExcelerator import *

import xlrd

wb = Workbook()

bk = xlrd.open_workbook('tms.xls')

print bk

for sh in bk.sheets():

    print sh.name

    ws0 = wb.add_sheet(sh.name)

    for n_row in range(sh.nrows):

        for info in range(len(sh.row(n_row))):

            ws0.write(n_row, info, sh.cell_value(n_row, info))

    

    if sh.name==u'(关联交易类)凭证数据':

        ws0.write(1, 0, unicode('(关联交易类)凭证数据','utf-8'))

wb.save('tms2.xls')

这是我以前整的一个例子 py文件的文件编码搞成UTF-8 里面的编码也搞成utf-8 你可以试试

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式