如何将Excel工作表保存为Python(Unix)中的CSV?

我想编写一个Python脚本来读取Excel电子表格,并将其一些工作表保存为CSV文件。

我怎样才能做到这一点?

谢谢!

PS:我发现第三方模块用于从Python读写Excel文件,但据我所知,他们只能以Excel(即* .xls)格式保存文件。 如果我在这里错了,一些示例代码显示如何做我正在试图用这些模块,将不胜感激。

我也遇到了一个我不太明白的解决scheme ,但似乎是Windows特有的,因此我无法帮助我,因为我想在Unix中这样做。 无论如何,我不清楚这个解决scheme可以扩展到做我想做的事情,即使在Windows下。

逐行描述使用这两个库的最基本的例子:

  1. 打开xls工作簿
  2. 引用第一个电子表格
  3. 以二进制打开写入目标csv文件
  4. 创建默认的csv编写器对象
  5. 循环播放第一个电子表格的所有行
  6. 将行转储到csv中

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]) 

使用xlrdopenpyxl模块分别读取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)