欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)批量CSV轉Excel的高性能處理方案

 更新時間:2025年09月01日 09:15:54   作者:小莊-Python辦公  
在日常辦公中,我們經(jīng)常需要將CSV格式的數(shù)據(jù)轉換為Excel文件,本文將介紹一個基于Python的高性能解決方案,感興趣的小伙伴可以跟隨小編一起學習一下

一、場景需求

在日常辦公中,我們經(jīng)常需要將CSV格式的數(shù)據(jù)轉換為Excel文件。特別是當遇到以下情況時:

需要處理數(shù)十萬行的大型數(shù)據(jù)文件

要求保留原始數(shù)據(jù)格式(如數(shù)字、文本等)

需要對表頭和內(nèi)容應用不同的樣式

需要批量轉換多個CSV文件

本文將介紹一個基于Python的高性能解決方案。

二、技術方案

我們使用pyexcelerate庫來實現(xiàn)高性能的Excel文件生成,相比傳統(tǒng)的openpyxl或pandas,它在處理大規(guī)模數(shù)據(jù)時速度更快。

用途安裝
pyexcelerateExcel寫入pip install pyexcelerate -i https://pypi.tuna.tsinghua.edu.cn/simple/
os獲取路徑內(nèi)置庫無需安裝
csv讀寫csv文件內(nèi)置庫無需安裝

三、核心代碼

核心代碼

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_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數(shù)據(jù)
    with open(csv_path, 'r', encoding='utf-8') as csvfile:
        reader = csv.reader(csvfile)
        header = next(reader)
        data = list(reader)
    
    # 創(chuàng)建Excel工作簿
    wb = Workbook()
    ws = wb.new_sheet("Sheet1")
    
    # 寫入數(shù)據(jù)并應用樣式
    for row_idx, 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)}")

四、批量處理方案

如果需要批量處理多個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)

五、性能優(yōu)化

樣式預定義:提前定義好樣式對象,避免重復創(chuàng)建

批量寫入:雖然示例中是逐個單元格寫入,但pyexcelerate內(nèi)部已做優(yōu)化

類型處理:可擴展代碼自動識別數(shù)字列并轉換格式

六、使用示例

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_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數(shù)據(jù)
    with open(csv_path, 'r', encoding='utf-8') as csvfile:
        reader = csv.reader(csvfile)
        header = next(reader)
        data = list(reader)
    
    # 創(chuàng)建Excel工作簿
    wb = Workbook()
    ws = wb.new_sheet("Sheet1")
    
    # 寫入數(shù)據(jù)并應用樣式
    for row_idx, 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')

七、小結

通過這種方法,我們可以:

  • 高效處理數(shù)十萬行的大型CSV文件
  • 保持數(shù)據(jù)的原始格式
  • 應用專業(yè)的Excel樣式
  • 輕松實現(xiàn)批量轉換

對于需要處理更大數(shù)據(jù)量的場景,還可以考慮分塊讀取CSV文件或使用多線程處理。

到此這篇關于Python實現(xiàn)批量CSV轉Excel的高性能處理方案的文章就介紹到這了,更多相關Python批量CSV轉Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論