如何将Excel工作表保存为CSV

5w9g7ksd  于 2023-05-19  发布在  其他
关注(0)|答案(5)|浏览(187)

我想写一个Python脚本,读取Excel电子表格,并将其中的一些工作表保存为CSV文件。
我该怎么做?
我发现third-party modules可以从Python中阅读和写入Excel文件,但据我所知,它们只能将文件保存在Excel中(即 *.xls)格式。如果我错了,请提供一些示例代码来说明如何使用这些模块。
我还遇到了one solution,我不能完全理解,但似乎是Windows特定的,因此无论如何都不会帮助我,因为我想在Unix中这样做。无论如何,我不清楚这个解决方案是否可以扩展到做我想做的事情,即使是在Windows下。

neekobn8

neekobn81#

最基本的例子使用两个库逐行描述:
1.打开xls工作簿
1.参考第一个电子表格
1.以二进制方式打开并写入目标csv文件
1.创建默认的csv编写器对象
1.循环遍历第一个电子表格的所有行
1.将行转储到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.active
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])
5n0oy7gb

5n0oy7gb2#

使用pandas会更短一些:

import pandas as pd

df = pd.read_excel('my_file', sheet_name='my_sheet_name')  # sheet_name is optional
df.to_csv('output_file_name', index=False)  # index=False prevents pandas from writing a row index to the CSV.

# oneliner
pd.read_excel('my_file', sheetname='my_sheet_name').to_csv('output_file_name', index=False)
2skhul33

2skhul333#

截至2021年12月和Python 3:

openpyxl API已经发生了很大的变化(参见https://openpyxl.readthedocs.io/en/stable/usage.html),我已经通过@Boud(现在是@Zeugma?),具体如下:

import openpyxl
import csv

wb = openpyxl.load_workbook('test.xlsx')
sh = wb.active # was .get_active_sheet()
with open('test.csv', 'w', newline="") as file_handle:
    csv_writer = csv.writer(file_handle)
    for row in sh.iter_rows(): # generator; was sh.rows
        csv_writer.writerow([cell.value for cell in row])

@Leonid提出了一些有用的意见-特别是:
csv.writer提供了一些额外的选项,例如自定义分隔符:

csv_writer = csv.writer(fout, delimiter='|', quotechar='"', quoting=csv.QUOTE_MINIMAL)

高温加热

6rvt4ljy

6rvt4ljy4#

使用xlrdopenpyxl模块分别读取xls或xlsx文档,使用csv模块进行写入。
或者,如果使用Jython,您可以使用Apache POI库来读取.xls.xlsx,并且本机CSV模块仍然可用。

ojsjcaue

ojsjcaue5#

首先将Excel电子表格读入Pandas。下面的代码将您的Excel电子表格导入到Pandas作为OrderedDict,其中包含您的所有工作表作为DataFrames。然后,只需使用worksheet_name作为键来访问特定的工作表作为DataFrame,并使用df.to_csv()仅将所需的工作表保存为csv文件。希望这将在您的情况下工作。

import pandas as pd
df = pd.read_excel('YourExcel.xlsx', sheet_name=None)
df['worksheet_name'].to_csv('output.csv')

相关问题