本文主要是介绍Python实现批量CSV转Excel的高性能处理方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一...
一、场景需求
在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件。特别是当遇到以下情况时:
需要处理数十万行的大型数据文件
要求保留原始数据格式(如数字、文本等)
需要对表头和内容应用不同的样式
需要批量转换多个CSV文件
本文将介绍一个基于python的高性能解决方案。
二、技术方案
我们使用pyexcelerate库来实现高性能的Excel文件生成,相比传统的openpyxl或pandas,它在处理大规模数据时速度js更快。
库 | 用途 | 安装 |
---|---|---|
pyexcelerate | Excel写入 | pip install pyexcelerate -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
os | 获取路径 | 内置库无需安装 |
csv | 读写csv文件 | 内置库无需安装 |
三、核心代码
核心代码
imppythonort csv import os import time from pyexcelerate import Workbook, Style, Font, Fill, Color, Alignment # 预定义表头样式 header_style = Style( font=Font(bold=True, size=9, color=Color(255, 255, 255), family='Arial'), fill=Fill(background=Color(192, 0, 0)), # 红色背景 alignment=Alignment(horizontal='center', vertical='center') ) # 单元格样式(普通文本) content_style = Style( font=Font(size=9, family='Arial'), alignment=Alignment(horizontal='center', vertical='center') ) def csv_to_excel(csv_path, excel_path): """将CSV文件转换为Excel文件""" start_time = time.time() # 读取CSV数据 with open(csv_path, 'r', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) header = next(reader) data = list(reader) # 创建Excel工作簿 wb = Workbook() ws = wb.new_sheet("Sheet1") # 写入数据并应用样式 for row_idx, row_data in enumerate([header] + data, start=1): for col_idx, value in enumerate(row_data, start=1): ws.sChina编程et_cell_value(row_idx, col_idx, value) ws.set_cell_style(row_idx, col_idx, header_style if row_idx == 1 else content_style) # 保存Excel文件 os.makedirs(os.path.dirname(excel_path), exist_ok=True) wb.save(excel_path) print(f"转换完成,耗时:{time.time() - start_time:.2f}秒") print(f"文件已保存至:{os.path.abspath(excel_path)}")
四、批量处理方案
如果需要批量处理多个CSV文件,可以使用以下代码:
def BATch_convert(csv_folder, output_folder): """批量转换文件夹中的所有CSV文件""" if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(csv_folder): if filename.endswith('.csv'): csv_path = os.path.join(csv_folder, filename) excel_name = os.path.splitext(filename)[0] + '.xlsx' excel_path = os.path.join(output_folder, excel_name) print(f"正在处理: {filename}") csv_to_excel(csv_path, excel_path)
五、性能优化
样式预定义:提前定义好样式对象,避免重复创建
批量写入:虽然示例中是逐个单元格写入,但pyexcelerate内部已做优化
类型处理:可扩展代码自动识别数字列并转换格式
六、使用示例
if __name__ == "__main__": # 单文件转换 csv_to_excel('input.csv', 'output/output.xlsx') # 批量转换 batch_convert('csv_files', 'excel_outputs')
完整代码
import csv import os import time from pyexcelerate import Workbook, Style, Font, Fill, Color, Alignment # 预定义表头样式 header_style = Style( font=Font(bold=True, size=9, color=Color(255, 255, 255), family='Arial'), fill=Fill(background=Color(192, 0, 0)), # 红色背景 alignment=Alignment(horizontal='center', vertical='center') ) # 单元格样式(普通文本) content_stChina编程yle = Style( font=Font(size=9, family='Arial'), alignment=Alignment(horizontal='center', vertical='center') ) def csv_to_excel(csv_path, excel_path): """将CSV文件转换为Excel文件""" start_time = time.time() # 读取CSV数据 with open(csv_path, 'r', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) header = next(reader) data = list(reader) # 创建Excel工作簿 wb = Workbook() ws = wb.new_sheet("Sheet1") # 写入数据并应用样式 for row_ipythondx, row_data in enumerate([header] + data, start=1): for col_idx, value in enumerate(row_data, start=1): ws.set_cell_value(row_idx, col_idx, value) ws.set_cell_style(row_idx, col_idx, header_style if row_idx == 1 else content_style) # 保存Excel文件 os.makedirs(os.path.dirname(excel_path), exist_ok=True) wb.save(excel_path) print(f"转换完成,耗时:{time.time() - start_time:.2f}秒") print(f"文件已保存至:{os.path.abspath(excel_path)}") def batch_convert(csv_folder, output_folder): """批量转换文件夹中的所有CSV文件""" if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(csv_folder): if filename.endswith('.csv'): csv_path = os.path.join(csv_folder, filename) excel_name = os.path.splitext(filename)[0] + '.xlsx' excel_path = os.path.join(output_folder, excel_name) print(f"正在处理: {filename}") csv_to_excel(csv_path, excel_path) if __name__ == "__main__": # 单文件转换 csv_to_excel('input.csv', 'output/output.xlsx') # 批量转换 batch_convert('csv_files', 'excel_outputs')
七、小结
通过这种方法,我们可以:
- 高效处理数十万行的大型CSV文件
- 保持数据的原始格式
- 应用专业的Excel样式
- 轻松实现批量转换
对于需要处理更大数据量的场景,还可以考虑分块读取CSV文件或使用多线程处理。
到此这篇关于Python实现批量CSV转Excel的高性能处理方案的文章就介绍到这了,更多相关Python批量CSV转Excel内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Python实现批量CSV转Excel的高性能处理方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!