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

时间:2017-12-07 21:04:20

标签: python pandas openpyxl xlrd xlsxwriter

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

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

4 个答案:

答案 0 :(得分: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)

最快速的想法:

  1. pandas.read_excel
  2. pandas.DataFrame.to_csv
  3. 作为额外的好处,您可以在将数据保存到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="'")
    

    在某些时候,处理大量数据将花费大量时间。只是生活中的一个事实。不过,如果这是一个问题,那么很适合寻找选择。

答案 2 :(得分: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)

答案 3 :(得分: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。我尝试过的所有其他方式都拒绝工作。