如何将Excel工作表另存为CSV

问题描述 投票:14回答:3

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

我怎样才能做到这一点?

我发现third-party modules用于从Python读取和编写Excel文件,但据我所知,它们只能以Excel(即* .xls)格式保存文件。如果我在这里错了,一些示例代码显示如何做我正在尝试用这些模块做的事情将不胜感激。

我也遇到了one solution,我不太明白,但似乎是特定于Windows的,所以无论如何都不会帮助我,因为我想在Unix中这样做。无论如何,我不清楚这个解决方案可以扩展到我想做的事情,即使在Windows下也是如此。

python excel csv
3个回答
36
投票

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

  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:   # open('a_file.csv', 'w', newline="") for python 3
        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:  # open('test.csv', 'w', newline="") for python 3
    c = csv.writer(f)
    for r in sh.rows:
        c.writerow([cell.value for cell in r])

7
投票

使用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)

4
投票

使用xlrdopenpyxlmodule分别读取xls或xlsx文档,并使用csv模块进行写入。

或者,如果使用Jython,您可以使用Apache POI库来读取.xls.xlsx,并且原生CSV模块仍然可用。

© www.soinside.com 2019 - 2024. All rights reserved.