我想将目录中的所有 csv 文件转换为 xls 文件。Nick T 在此处发布了此代码如何将 .csv 批量转换为 .xls/xlsx
import os
import glob
import csv
import xlwt # from http://www.python-excel.org/
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = xlwt.Workbook()
ws = wb.add_sheet('data')
with open(csvfile, 'rU') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, val in enumerate(row):
ws.write(r, c, val)
wb.save(csvfile + '.xls')
但是,当我运行这个程序时,我收到来自最后一行的错误。
UnicodeDecodeError:'ascii'编解码器无法解码位置 0 处的字节 0xef:序数不在范围内(128)
有人知道我该如何摆脱这个问题吗?我在 Mac 上的终端上工作。
答案1
我更新了此代码,以便它可以在 python 3.5 上运行,方法是从循环中获取两行(wb = xlwt.Workbook()
并wb.save('output.xls')
在循环内)。
import os
import glob
import csv
import xlwt
wb = xlwt.Workbook() # put the xlwt out of the loop
for csvfile in glob.glob(os.path.join('.', '*.csv')):
fpath = csvfile.split("/", 1)
fname = fpath[1].split(".", 1)
ws = wb.add_sheet(fname[0])
with open(csvfile, 'r') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
ws.write(r, c, col)
#Save the results once the loop is done
wb.save('output.xls')