用Python将CSV转换为Excel xlsx的两种方法

3,864 阅读2分钟

问题的提出

💡 挑战。给出一个CSV文件。如何用Python将其转换为excel文件?

csv to excel in Python

我们创建一个文件夹,里面有两个文件,文件csv_to_excel.pymy_file.csv 。我们想把CSV文件转换为excel文件,这样在运行脚本csv_to_excel.py ,就可以在我们的文件夹中获得第三个文件my_file.csv ,像这样。

本教程中讨论的所有方法都显示了不同的代码片断,可以放入csv_to_excel.py ,以便在Python中把CSV转换为XLSX。

方法1:在Pandas中的5个简单步骤

在Python中,将.csv 转换为.xlsx (Excel)的最pythonic方法是使用Pandas库。

  1. 安装pandas 库,用 [pip install pandas](https://blog.finxter.com/how-to-install-pandas-in-python/)
  2. 安装pandas内部使用的openpyxl 库。 [pip install openpyxl](https://blog.finxter.com/fixed-modulenotfounderror-no-module-named-openpyxl/)
  3. 用以下方法导入pandas librayimport pandas as pd
  4. 通过使用表达式将CSV文件读入一个DataFrame df df = pd.read_csv('my_file.csv')
  5. 通过调用DataFrame存储在一个Excel文件df.to_excel('my_file.xlsx', index=None, header=True)
import pandas as pd


df = pd.read_csv('my_file.csv')
df.to_excel('my_file.xlsx', index=None, header=True)

请注意,有很多方法可以定制to_excel() 函数,以备你不需要标题。

  • 你不需要标题行。
  • 你想在Excel文件中固定第一行。
  • 你想把单元格格式化为数字而不是字符串,或
  • 你在原始CSV中有一个索引列,并希望在Excel文件中也考虑它。

如果你想做其中任何一项,请随时阅读我们在Finxter博客上的完整指南。

🌍 教程Pandas - 保存数据到Excel的非官方指南DataFrame.to_excel()

另外,我们还在这里录制了一个关于这种方法的来龙去脉的视频。

让我们来看看在Python中把CSV转换为Excel文件的另一种方法。

方法2:模块csv和openpyxl

要将CSV转换为Excel文件,你也可以使用以下方法。

  • 导入csv 模块
  • 导入openpyxl 模块
  • 通过使用csv.reader() 函数,将 CSV 文件读成一个 列表,每行一个内部列表
  • 通过使用openpyxl 库的工作簿表示,将列表写入 Excel 文件。
  • 通过调用 获取活动的工作表。workbook.active
  • 通过调用worksheet.append(row) 写入工作表,并附加一个列表,每个单元格一个值。

下面的函数将一个给定的CSV文件转换为一个Excel文件。

import csv
import openpyxl


def csv_to_excel(csv_filename, excel_filename):

    # Read CSV file
    csv_data = []
    with open(csv_filename) as f:
        csv_data = [row for row in csv.reader(f)]
    
    # Write to Excel file
    workbook = openpyxl.workbook.Workbook()
    worksheet = workbook.active
    for row in csv_data:
        worksheet.append(row)
    workbook.save(excel_filename)


if __name__ == "__main__":
    csv_to_excel("my_file.csv", "my_file.xlsx")

这是一种更精细的方法,它允许你修改代码中的每一行,甚至将额外的细节写入Excel工作表中。