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)”
快疯了,弄不出来
应该是编码问题,可是不会解决啊 展开
已有的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)”
快疯了,弄不出来
应该是编码问题,可是不会解决啊 展开
1个回答
展开全部
把你的写入excel 的内容编码一哈
例如
str('内容').encode('utf-8') 或者str('内容').encode('gbk')
再写入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 你可以试试
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询