Python将csv转换为xlsx

在这篇文章中,有一个Python例子可以将csv转换为xls。

但是,我的文件有超过65536行,所以xls不起作用。 如果我把这个文件命名为xlsx,那没有什么不同。 有没有一个Python包转换为xlsx?

这里是一个使用xlsxwriter的例子:

import os import glob import csv from xlsxwriter.workbook import Workbook for csvfile in glob.glob(os.path.join('.', '*.csv')): workbook = Workbook(csvfile[:-4] + '.xlsx') worksheet = workbook.add_worksheet() with open(csvfile, 'rt', encoding='utf8') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet.write(r, c, col) workbook.close() 

仅供参考,还有一个名为openpyxl的软件包,可以读取/写入Excel 2007 xlsx / xlsm文件。

希望有所帮助。

通过我的库pyexcel ,你可以在一个命令行中完成:

 from pyexcel.cookbook import merge_all_to_a_book import pyexcel.ext.xlsx # needed to support xlsx format, pip install pyexcel-xlsx import glob merge_all_to_a_book(glob.glob("your_csv_directory/*.csv"), "output.xlsx") 

每个CSV将有自己的工作表,名称将是他们的文件名。

我如何用openpyxl lib做到这一点

 import csv from openpyxl import Workbook def convert_csv_to_xlsx(self): wb = Workbook() sheet = wb.active CSV_SEPARATOR = "#" with open("my_file.csv" as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): for idx, val in enumerate(col.split(CSV_SEPARATOR)): cell = sheet.cell(row=r+1, column=idx+1) cell.value = val wb.save("my_file.xlsx") 
 from openpyxl import Workbook import csv wb = Workbook() ws = wb.active with open('test.csv', 'r') as f: for row in csv.reader(f): ws.append(row) wb.save('name.xlsx') 

有一个简单的方法

 import os import csv import sys from openpyxl import Workbook reload(sys) sys.setdefaultencoding('utf8') if __name__ == '__main__': workbook = Workbook() worksheet = workbook.active with open('input.csv', 'r') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): for idx, val in enumerate(col.split(',')): cell = worksheet.cell(row=r+1, column=c+1) cell.value = val workbook.save('output.xlsx')