最新国产好看的视频,伊人天堂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ù)來實(shí)現(xiàn)高性能的Excel文件生成,相比傳統(tǒng)的openpyxl或pandas,它在處理大規(guī)模數(shù)據(jù)時(shí)速度更快。

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

三、核心代碼

核心代碼

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")
    
    # 寫入數(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)建

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

類型處理:可擴(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")
    
    # 寫入數(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é)

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

  • 高效處理數(shù)十萬(wàn)行的大型CSV文件
  • 保持?jǐn)?shù)據(jù)的原始格式
  • 應(yīng)用專業(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 中,真值和假值是布爾類型的兩個(gè)唯一可能的值,本文將深入探討 Python 中的真值和假值概念,幫助你更好地理解和運(yùn)用它們,感興趣的可以了解一下
    2023-11-11
  • Keras存在自定義loss或layer怎樣解決load_model報(bào)錯(cuò)問題

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

    這篇文章主要介紹了Keras存在自定義loss或layer怎樣解決load_model報(bào)錯(cuò)問題,具有很好的參考價(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)化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用pyshp包進(jìn)行shapefile文件修改的例子

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

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

    Python?遺傳算法處理TSP問題詳解

    遺傳算法(Genetic?Algorithm,?GA)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過程的計(jì)算模型,是一種通過模擬自然進(jìn)化過程搜索最優(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ā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-07-07
  • Python制作表白愛心合集

    Python制作表白愛心合集

    這篇文章主要介紹了幾個(gè)表白小項(xiàng)目合集,有愛心表白、愛心樹等。文中的示例代碼講解詳細(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入門:tfrecord 和tf.data.TFRecordDataset的使用

    tensorflow入門:tfrecord 和tf.data.TFRecordDataset的使用

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

最新評(píng)論

高要市| 巴塘县| 宜阳县| 恩施市| 南川市| 辽宁省| 沙田区| 大余县| 静宁县| 宜城市| 安国市| 常州市| 广东省| 崇阳县| 定边县| 甘孜| 土默特右旗| 筠连县| 交城县| 阿鲁科尔沁旗| 南召县| 龙门县| 扎囊县| 玉溪市| 仁怀市| 屯昌县| 贵溪市| 承德县| 三江| 丹凤县| 安顺市| 慈溪市| 绍兴县| 柏乡县| 巫溪县| 霍邱县| 马关县| 汤原县| 泾川县| 仙游县| 潞城市|