我想编写一个Python脚本来读取Excel电子表格,并将其一些工作表保存为CSV文件。
我怎样才能做到这一点?
谢谢!
PS:我发现第三方模块用于从Python读写Excel文件,但据我所知,他们只能以Excel(即* .xls)格式保存文件。 如果我在这里错了,一些示例代码显示如何做我正在试图用这些模块,将不胜感激。
我也遇到了一个我不太明白的解决scheme ,但似乎是Windows特有的,因此我无法帮助我,因为我想在Unix中这样做。 无论如何,我不清楚这个解决scheme可以扩展到做我想做的事情,即使在Windows下。
逐行描述使用这两个库的最基本的例子:
import xlrd import csv with xlrd.open_workbook('a_file.xls') as wb: sh = wb.sheet_by_index(0) # or wb.sheet_by_name('name_of_the_sheet_here') with open('a_file.csv', 'wb') as f: c = csv.writer(f) for r in range(sh.nrows): c.writerow(sh.row_values(r))
import openpyxl import csv wb = openpyxl.load_workbook('test.xlsx') sh = wb.get_active_sheet() with open('test.csv', 'wb') as f: c = csv.writer(f) for r in sh.rows: c.writerow([cell.value for cell in r])
使用xlrd
或openpyxl
模块分别读取xls或xlsx文件,并写入csv
模块。
或者,如果使用Jython ,则可以使用Apache POI库来读取.xls
或.xlsx
,并且本地CSV模块仍然可用。
使用pandas
会稍微短一些:
import pandas as pd df = pd.read_excel('my_file', sheetname='my_sheet_name') # sheetname is optional df.to_csv('output_file_name', index=False) # index=False prevents pandas to write row index # oneliner pd.read_excel('my_file', sheetname='my_sheet_name').to_csv('output_file_name', index=False)