Python数据处理与Excel存储详解
openpyxl
特点:
优点:
缺点:
import os
import openpyxl
# 获取当前工作目录
current_work_directory = os.getcwd()
# 指定 Excel 文件路径
excel_file_path = os.path.join(current_work_directory, 'test.xlsx')
# 加载已存在的工作簿
workbook = openpyxl.load_workbook(excel_file_path)
# 选择默认的工作表,或者通过名字获取特定的工作表
sheet = workbook.active
# 假设这是你要写入的数据,可以是任何你处理后的数据
data_to_write = [
['标题1', '标题2', '标题3'],
[1, 2, 3],
[4, 5, 6],
# ... 更多数据
]
# 写入数据到工作表
for row_index, row_data in enumerate(data_to_write, start=1): # 从第一行开始写入
for col_index, value in enumerate(row_data, start=1):
sheet.cell(row=row_index, column=col_index, value=value)
# 保存工作簿
workbook.save(excel_file_path)
xlsxwriter
XlsxWriter 是一个用于创建 Excel XLSX 文件的 Python 库,它支持写入大量数据并保存。相比于 XLWT,XlsxWriter 支持更现代的 XLSX 格式,并且在处理大量数据时性能更好。
特点:
优点:
缺点:
import os
import xlsxwriter
# 获取当前工作目录
current_work_directory = os.getcwd()
# 指定 Excel 文件路径
excel_file_path = os.path.join(current_work_directory, 'test.xlsx')
# 创建一个新的工作簿
workbook = xlsxwriter.Workbook(excel_file_path)
# 创建一个新的工作表
worksheet = workbook.add_worksheet('Sheet')
# 设置标题行
titles = ["列名1", "列名2", "列名3", "列名4"]
for col_num, title in enumerate(titles, start=1):
worksheet.write(0, col_num - 1, title)
# 修改单元格值
worksheet.write(1, 1, 1)
# 保存工作簿到当前工作目录
workbook.close()
总结
openpyxl
可能是更好的选择。xlsxwriter
可能更适合你。根据你的具体需求,你可以选择最合适的库。对于大多数简单的用例,xlsxwriter
由于其写入速度快和资源消耗低,通常是一个较好的选择。而对于需要更复杂操作的用例,openpyxl
提供了更多的灵活性。
大量数据
import xlsxwriter
# 创建一个新的 Excel 文件
workbook = xlsxwriter.Workbook('large_data.xlsx')
# 添加一个工作表
worksheet = workbook.add_worksheet('Data')
# 写入表头
headers = ['ID', 'Name', 'Age', 'City']
for col_num, header in enumerate(headers):
worksheet.write(0, col_num, header)
# 生成大量数据并写入工作表
row_num = 1
for i in range(1, 100001): # 生成 100,000 行数据
data = [i, f'Name{i}', i % 100, f'City{i % 10}']
for col_num, value in enumerate(data):
worksheet.write(row_num, col_num, value)
row_num += 1
# 关闭工作簿并保存文件
workbook.close()
print("数据已成功写入 large_data.xlsx 文件。")
使用pandas保存到Excel文件
Pandas导入导出excel、csv、txt文件
from pandas import DataFrame
l1 = [1,2,3,4]
l2 = [1,2,3,4]
df = DataFrame({'序号': l1, '值': l2})
df.to_excel('test.xlsx', sheet_name='sheet1', index=False)
作者:星寂樱易李