【发布时间】:2020-03-19 10:53:03
【问题描述】:
正在尝试将 csv 文件的文件夹列表转换为 excel。不幸的是,它们中的大多数都不起作用,我也遇到了以下错误。当我通过 excel 前端做同样的事情时,它可以很好地从 csv 中保存它们。有什么想法我可能做错了吗?
import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = openpyxl.Workbook()
ws = wb.active
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader, start=1):
for c, val in enumerate(row, start=1):
ws.cell(row=r, column=c).value = val
wb.save(csvfile + '.xlsx')
得到以下错误:
(最近一次通话最后): 文件“C:\Users\test\Documents\ConvertCSVtoXLSX\2007+.py”,第 14 行,在 ws.cell(row=r, column=c).value = val
文件“C:\Python27\ArcGIS10.7\lib\site-packages\openpyxl\cell\cell.py”,第 272 行,值 self._bind_value(value)
文件“C:\Python27\ArcGIS10.7\lib\site-packages\openpyxl\cell\cell.py”,第 229 行,在 _bind_value value = self.check_string(value)
文件“C:\Python27\ArcGIS10.7\lib\site-packages\openpyxl\cell\cell.py”,第 180 行,在 check_string value = unicode(value, self.encoding)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 30: invalid start byte
【问题讨论】:
-
尝试使用
'r'而不是'rb' -
这个我试过了,好像还是不行。我还注意到,使用脚本转换与直接使用 excel16 保存文件时文件大小不同。这可能是因为脚本有限
标签: python excel python-2.7 csv character-encoding