最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、場(chǎng)景需求

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

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

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

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

需要批量轉(zhuǎn)換多個(gè)CSV文件

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

二、技術(shù)方案

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

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

三、核心代碼

核心代碼

import csv
import os
import time
from pyexcelerate import Workbook, Style, Font, Fill, Color, Alignment

# 預(yù)定義表頭樣式
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文件轉(zhuǎn)換為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")
    
    # 寫(xiě)入數(shù)據(jù)并應(yīng)用樣式
    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"轉(zhuǎn)換完成,耗時(shí):{time.time() - start_time:.2f}秒")
    print(f"文件已保存至:{os.path.abspath(excel_path)}")

四、批量處理方案

如果需要批量處理多個(gè)CSV文件,可以使用以下代碼:

def batch_convert(csv_folder, output_folder):
    """批量轉(zhuǎn)換文件夾中的所有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)化

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

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

類(lèi)型處理:可擴(kuò)展代碼自動(dòng)識(shí)別數(shù)字列并轉(zhuǎn)換格式

六、使用示例

if __name__ == "__main__":
    # 單文件轉(zhuǎn)換
    csv_to_excel('input.csv', 'output/output.xlsx')
    
    # 批量轉(zhuǎn)換
    batch_convert('csv_files', 'excel_outputs')

完整代碼

import csv
import os
import time
from pyexcelerate import Workbook, Style, Font, Fill, Color, Alignment

# 預(yù)定義表頭樣式
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文件轉(zhuǎn)換為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")
    
    # 寫(xiě)入數(shù)據(jù)并應(yīng)用樣式
    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"轉(zhuǎn)換完成,耗時(shí):{time.time() - start_time:.2f}秒")
    print(f"文件已保存至:{os.path.abspath(excel_path)}")
   
def batch_convert(csv_folder, output_folder):
    """批量轉(zhuǎn)換文件夾中的所有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__":
    # 單文件轉(zhuǎn)換
    csv_to_excel('input.csv', 'output/output.xlsx')
    
    # 批量轉(zhuǎn)換
    batch_convert('csv_files', 'excel_outputs')

七、小結(jié)

通過(guò)這種方法,我們可以:

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

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

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

相關(guān)文章

  • 深入理解Python中的真值和假值概念

    深入理解Python中的真值和假值概念

    在 Python 中,真值和假值是布爾類(lèi)型的兩個(gè)唯一可能的值,本文將深入探討 Python 中的真值和假值概念,幫助你更好地理解和運(yùn)用它們,感興趣的可以了解一下
    2023-11-11
  • Keras存在自定義loss或layer怎樣解決load_model報(bào)錯(cuò)問(wèn)題

    Keras存在自定義loss或layer怎樣解決load_model報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了Keras存在自定義loss或layer怎樣解決load_model報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • selenium+unittest實(shí)現(xiàn)web自動(dòng)化的示例代碼

    selenium+unittest實(shí)現(xiàn)web自動(dòng)化的示例代碼

    本文主要介紹了selenium+unittest實(shí)現(xiàn)web自動(dòng)化的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用pyshp包進(jìn)行shapefile文件修改的例子

    使用pyshp包進(jìn)行shapefile文件修改的例子

    今天小編就為大家分享一篇使用pyshp包進(jìn)行shapefile文件修改的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python?遺傳算法處理TSP問(wèn)題詳解

    Python?遺傳算法處理TSP問(wèn)題詳解

    遺傳算法(Genetic?Algorithm,?GA)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過(guò)程的計(jì)算模型,是一種通過(guò)模擬自然進(jìn)化過(guò)程搜索最優(yōu)解的方法
    2022-11-11
  • Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)

    Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium實(shí)現(xiàn)在 Geoserver批量發(fā)布來(lái)自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-07-07
  • Python制作表白愛(ài)心合集

    Python制作表白愛(ài)心合集

    這篇文章主要介紹了幾個(gè)表白小項(xiàng)目合集,有愛(ài)心表白、愛(ài)心樹(shù)等。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的價(jià)值,需要的可以參考一下
    2022-01-01
  • Python實(shí)現(xiàn)壓縮pdf文件大小

    Python實(shí)現(xiàn)壓縮pdf文件大小

    工作中常需要壓縮數(shù)據(jù)文件大小,壓縮PDF文件是一種減少PDF文件大小的方法,這樣可以使文件更易于傳輸和存儲(chǔ),本文將使用Python實(shí)現(xiàn)這一功能,需要的可以參考下
    2024-02-02
  • python線程里哪種模塊比較適合

    python線程里哪種模塊比較適合

    在本篇文章里我們給大家整理了關(guān)于python線程里哪種模塊比較適合的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • tensorflow入門(mén):tfrecord 和tf.data.TFRecordDataset的使用

    tensorflow入門(mén):tfrecord 和tf.data.TFRecordDataset的使用

    今天小編就為大家分享一篇tensorflow入門(mén):tfrecord 和tf.data.TFRecordDataset的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01

最新評(píng)論

伊春市| 中西区| 手游| 兴海县| 邵武市| 北京市| 苍南县| 航空| 遂溪县| 屏边| 潼关县| 行唐县| 乌拉特中旗| 广德县| 昌吉市| 综艺| 崇明县| 太康县| 邵武市| 乌拉特中旗| 河东区| 曲麻莱县| 卢龙县| 泽普县| 周至县| 玉环县| 绥化市| 玉山县| 偏关县| 黄山市| 丽水市| 横山县| 濮阳县| 图片| 绥德县| 南丹县| 正蓝旗| 泸西县| 杭锦后旗| 嘉祥县| 越西县|