Python:创建Excel工作簿并将CSV文件作为工作表导入
我有几个csv文件,想把它们放到一个Excel工作簿(xls/xlsx)里,作为新的工作表。请问我该怎么做呢?
我在网上查了一下,发现了一个叫'pyXLwriter'的工具,但好像这个项目已经停止更新了。在我尝试使用'pyXLwriter'的时候,想知道有没有其他的替代方案、建议或者模块?
非常感谢。
[编辑]
这是我的解决方案:(如果有人有更简洁、更符合Python风格的解决方案,请评论。谢谢)
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"
6 个回答
4
使用 xlsxwriter 来创建和写入 Excel 文件,方法是在 Python 中操作。
你可以通过以下命令来安装它: 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()
12
你可以在这个xlwt 教程中找到你需要的所有信息。这些库(xlrd 和 xlwt)是用Python处理Excel文件时最受欢迎的选择。不过,目前它们只支持Excel的二进制格式(.xls)。
28
我不太明白你说的“更简洁,更符合Python风格”是什么意思,不过你确实可以让它看起来更好一些:
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")