问题的提出
挑战。给出一个CSV文件。如何用Python将其转换为excel文件?
我们创建一个文件夹,里面有两个文件,文件csv_to_excel.py
和my_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库。
- 安装
pandas
库,用[pip install pandas](https://blog.finxter.com/how-to-install-pandas-in-python/)
- 安装pandas内部使用的
openpyxl
库。[pip install openpyxl](https://blog.finxter.com/fixed-modulenotfounderror-no-module-named-openpyxl/)
- 用以下方法导入
pandas
librayimport pandas as pd
- 通过使用表达式将CSV文件读入一个DataFrame
df
df = pd.read_csv('my_file.csv')
- 通过调用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工作表中。