如何快速将python中的xlsx文件转换为csv文件?

问题描述 投票:2回答:4

我有一个140MB的Excel文件,我需要使用pandas进行分析。问题是,如果我打开这个文件作为xlsx,只需要阅读它就需要5分钟的python。我试图手动将此文件保存为csv然后需要Python大约一秒钟才能打开并阅读它!有不同的2012-2014解决方案,为什么Python 3不能真正起作用。

有人可以建议如何快速转换文件'C:\master_file.xlsx''C:\master_file.csv'

python pandas openpyxl xlrd xlsxwriter
4个回答
2
投票

有一个项目旨在处理称为“行”的数据时非常pythonic。不过,它依赖于xlsx的“openpyxl”。我不知道这是否会比熊猫更快,但无论如何:

$ pip install rows openpyxl

和:

import rows
data = rows.import_from_xlsx("my_file.xlsx")
rows.export_to_csv(data, open("my_file.csv", "wb"))

1
投票

流行的最快方式:

  1. pandas.read_excel
  2. pandas.DataFrame.to_csv

作为额外的好处,您可以在将数据保存到csv之前清理数据。

import pandas as pd
df = pd.read_excel('C:\master_file.xlsx', header=0) #, sheetname='<your sheet>'
df.to_csv('C:\master_file.csv', index=False, quotechar="'")

在某些时候,处理大量数据将花费大量时间。只是生活中的一个事实。不过,如果这是一个问题,很高兴找到选项。


1
投票

在openpyxl中使用只读模式。像下面这样的东西应该工作。

import csv
import openpyxl

wb = load_workbook("myfile.xlsx", read_only=True)
ws = wb['sheetname']
with open("myfile.csv", "wb") as out:
    writer = csv.writer(out)
    for row in ws:
        values = (cell.value for cell in row)
        writer.writerow(values)

0
投票

我遇到了和你一样的问题。熊猫和openpyxl对我不起作用。

我遇到了这个解决方案,对我来说很有用:

import win32com.client
xl=win32com.client.Dispatch("Excel.Application")
xl.DisplayAlerts = False
xl.Workbooks.Open(Filename=your_file_path,ReadOnly=1)
wb = xl.Workbooks(1)
wb.SaveAs(Filename='new_file.csv', FileFormat='6') #6 means csv
wb.Close(False)
xl.Application.Quit()
wb=None
xl=None

在这里,您可以通过Excel将文件转换为csv。我尝试的所有其他方式拒绝工作。

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