python:创buildexcel工作簿并将csv文件转储为工作表

我有几个csv文件,我想转储为一个Excel工作簿(xls / xlsx)中的新工作表。 我如何做到这一点?

Googlesearch并find“pyXLwriter”,但似乎该项目已停止。 虽然我试着'pyXLwriter'想知道有没有其他的select/build议/模块?

非常感谢。

[编辑]

这是我的解决scheme:(任何人都有更多的精简,pythonic解决scheme?做评论thx)

import glob import csv import xlwt import os wb = xlwt.Workbook() for filename in glob.glob("c:/xxx/*.csv"): (f_path, f_name) = os.path.split(filename) (f_short_name, f_extension) = os.path.splitext(f_name) ws = wb.add_sheet(str(f_short_name)) spamReader = csv.reader(open(filename, 'rb'), delimiter=',',quotechar='"') row_count = 0 for row in spamReader: for col in range(len(row)): ws.write(row_count,col,row[col]) row_count +=1 wb.save("c:/xxx/compiled.xls") print "Done" 

不知道你的意思是“更精简,更多pythonic”,但你一定可以修补一下:

 import glob, csv, xlwt, os wb = xlwt.Workbook() for filename in glob.glob("c:/xxx/*.csv"): (f_path, f_name) = os.path.split(filename) (f_short_name, f_extension) = os.path.splitext(f_name) ws = wb.add_sheet(f_short_name) spamReader = csv.reader(open(filename, 'rb')) for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): ws.write(rowx, colx, value) wb.save("c:/xxx/compiled.xls") 

你会在这个xlwt教程中find你所需要的。 这个库( xlrd和xlwt )是pipe理Python中Excel交互的最stream行的select。 缺点是,目前他们只支持Excel二进制格式(.xls)。

我总是通过string编写Office 2003 XML格式。 与写入和压缩构成xlsx文档的内容相比,这很容易实现,而且更容易pipe理。 它也不需要任何外部库。 (虽然可以轻松地推出自己的)

另外,Excel支持加载CSV文件。 空格分隔或字符分隔。 您可以直接加载它,或者尝试复制并粘贴,然后按下选项中的文本到列button。 当然,这个选项与python无关。

使用xlsxwriter来创build和写入在Python中的Excel文件。

安装它:pip install xlsxwriter

 import xlsxwriter # Create an new Excel file and add a worksheet. workbook = xlsxwriter.Workbook('demo.xlsx') worksheet = workbook.add_worksheet() # Widen the first column to make the text clearer. worksheet.set_column('A:A', 20) # Add a bold format to use to highlight cells. bold = workbook.add_format({'bold': True}) # Write some simple text. worksheet.write('A1', 'Hello') # Text with formatting. worksheet.write('A2', 'World', bold) # Write some numbers, with row/column notation. worksheet.write(2, 0, 123) worksheet.write(3, 0, 123.456) # Insert an image. worksheet.insert_image('B5', 'logo.png') workbook.close() 

尝试Sikuli。 这是一个Jython项目,但您可以使用它来自动执行任何GUI任务。

也可在GitHub回购“Kampfmitexcel”…

 import csv, xlwt, os def input_from_user(prompt): return raw_input(prompt).strip() def make_an_excel_file_from_all_the_txtfiles_in_the_following_directory(directory): wb = xlwt.Workbook() for filename in os.listdir(data_folder_path): if filename.endswith(".csv") or filename.endswith(".txt"): ws = wb.add_sheet(os.path.splitext(filename)[0]) with open('{}\\{}'.format(data_folder_path,filename),'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') for rowx, row in enumerate(reader): for colx, value in enumerate(row): ws.write(rowx, colx, value) return wb if __name__ == '__main__': path_to_data = input_from_user("Where is the data stored?: ") xls = make_an_excel_file_from_all_the_txtfiles_in_the_following_directory(path_to_data) xls_name = input_from_user('What do you want to name the excel file?: ') xls.save('{}\\{}{}'.format(data_folder_path,xls_name,'.xls')) print "Your file has been saved in the data folder." 

这是基于你的答案本身的答案。 但是我使用xlsxwriter的原因是因为它接受xlsx格式的更多数据。 由于xlwt限制你以65556行和xls格式。

 import xlsxwriter import glob import csv workbook = xlsxwriter.Workbook('compiled.xlsx') for filename in glob.glob("*.csv"): ws = workbook.add_worksheet(str(filename.split('.')[0])) spamReader = csv.reader(open(filename, 'rb'), delimiter=',',quotechar='"') row_count = 0 print filename for row in spamReader: for col in range(len(row)): ws.write(row_count,col,row[col]) row_count +=1 workbook.close()