Python高效實現(xiàn)CSV數(shù)據(jù)轉換為規(guī)范的Excel文件
在當今數(shù)據(jù)驅動的世界中,CSV(逗號分隔值)和Excel(電子表格)是兩種最常見的數(shù)據(jù)存儲和交換格式。CSV以其簡潔和通用性而聞名,而Excel則以其強大的數(shù)據(jù)組織、分析和可視化功能深受用戶喜愛。然而,手動將CSV數(shù)據(jù)導入Excel并進行格式化,往往是一項耗時且容易出錯的任務,尤其當數(shù)據(jù)量龐大或需要頻繁操作時。
幸運的是,Python作為一種功能強大的編程語言,為我們提供了自動化這一過程的完美解決方案。本文將深入探討如何使用一個強大的Python庫,將CSV文件高效地轉換為結構化且美觀的Excel文件,并詳細講解如何應用各種Excel樣式,從而極大地提升你的數(shù)據(jù)處理效率和專業(yè)性。
環(huán)境準備與基礎轉換
在開始之前,我們首先需要安裝本文將使用的核心庫。這個庫提供了一系列API,能夠輕松地操作Excel文件。
安裝必要的庫
打開你的終端或命令提示符,運行以下命令來安裝所需的庫:
pip install Spire.XLS
安裝完成后,我們就可以開始編寫代碼了。
基礎CSV轉Excel
最基本的任務是將CSV文件的內容原封不動地導入到Excel中。以下代碼展示了如何實現(xiàn)這一功能:
from spire.xls import *
# 輸入CSV文件路徑
input_csv_file = "data.csv"
# 輸出Excel文件路徑
output_excel_file = "output.xlsx"
# data.csv內容如下:
# Name,Age,City
# Alice,30,New York
# Bob,24,London
# Charlie,35,Paris
# 創(chuàng)建一個Workbook對象
workbook = Workbook()
# 從CSV文件加載數(shù)據(jù)。
# 第二個參數(shù)是分隔符(這里是逗號),第三個和第四個參數(shù)是起始行和列索引。
workbook.LoadFromFile(input_csv_file, ",", 1, 1)
# 獲取第一個工作表
sheet = workbook.Worksheets[0]
# 自動調整列寬以適應內容
sheet.AllocatedRange.AutoFitColumns()
# 將Workbook保存為Excel文件
workbook.SaveToFile(output_excel_file, ExcelVersion.Version2016)
print(f"CSV文件 '{input_csv_file}' 已成功轉換為 Excel文件 '{output_excel_file}'。")
轉換結果預覽:

這段代碼首先創(chuàng)建了一個Workbook對象,然后使用LoadFromFile方法將CSV數(shù)據(jù)加載到工作簿的第一個工作表中。AutoFitColumns()方法則確保了所有列寬都能自動適應其內容,提高了可讀性。最后,通過SaveToFile方法將結果保存為.xlsx格式的Excel文件。
深入Excel樣式設置
僅僅轉換格式是不夠的,Excel的強大之處在于其豐富的樣式設置。通過Python,我們可以精細控制單元格的字體、顏色、邊框、對齊方式等,使數(shù)據(jù)呈現(xiàn)更加專業(yè)和直觀。
字體樣式
我們可以設置字體名稱、大小、是否粗體、斜體、下劃線以及顏色。
# 假設workbook和sheet已從CSV加載
# workbook = Workbook()
# workbook.LoadFromFile(input_csv_file, ",", 1, 1)
# sheet = workbook.Worksheets[0]
# 獲取A1單元格的樣式
cell_style = sheet.Range["A1"].Style
# 設置字體名稱和大小
cell_style.Font.FontName = "Arial"
cell_style.Font.Size = 14
# 設置粗體、斜體和下劃線
cell_style.Font.IsBold = True
cell_style.Font.IsItalic = True
cell_style.Font.Underline = UnderlineStyleType.Single
# 設置字體顏色為藍色
cell_style.Font.Color = Color.get_Blue()
# 將樣式應用回單元格
sheet.Range["A1"].Style = cell_style
# 保存文件以查看效果
# workbook.SaveToFile("styled_output.xlsx", ExcelVersion.Version2016)
背景與邊框
背景色和邊框能有效區(qū)分數(shù)據(jù)區(qū)域,增強視覺效果。
# 設置B2單元格的背景色為淺黃色 sheet.Range["B2"].Style.KnownColor = ExcelKnownColors.LightYellow # 設置C3單元格的邊框 border_style = sheet.Range["C3"].Style.Borders border_style[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thick border_style[BordersLineType.EdgeLeft].Color = Color.get_Red() border_style[BordersLineType.EdgeRight].LineStyle = LineStyleType.Medium border_style[BordersLineType.EdgeRight].Color = Color.get_Green() border_style[BordersLineType.EdgeTop].LineStyle = LineStyleType.Dashed border_style[BordersLineType.EdgeTop].Color = Color.get_Blue() border_style[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Double border_style[BordersLineType.EdgeBottom].Color = Color.get_Purple() # 也可以設置整個區(qū)域的邊框 sheet.Range["A1:C3"].Style.Borders.LineStyle = LineStyleType.Thin sheet.Range["A1:C3"].Style.Borders.Color = Color.get_Black()
對齊方式
良好的對齊方式可以提升表格的整潔度。
# 設置D4單元格水平居中,垂直居中 sheet.Range["D4"].Style.HorizontalAlignment = HorizontalAlignType.Center sheet.Range["D4"].Style.VerticalAlignment = VerticalAlignType.Center # 文本自動換行 sheet.Range["E5"].Style.WrapText = True sheet.Range["E5"].ColumnWidth = 15 # 確保列寬足夠觸發(fā)換行 sheet.Range["E5"].Text = "這是一個很長的文本,需要自動換行才能完整顯示。" # 設置F6單元格左對齊并縮進1格 sheet.Range["F6"].Style.HorizontalAlignment = HorizontalAlignType.Left sheet.Range["F6"].Style.IndentLevel = 1
數(shù)字格式
針對數(shù)字、日期等數(shù)據(jù),設置正確的格式至關重要。
# 設置G7單元格為貨幣格式(美元) sheet.Range["G7"].NumberFormat = "$#,##0.00" sheet.Range["G7"].Value = "12345.678" # 設置H8單元格為百分比格式 sheet.Range["H8"].NumberFormat = "0.00%" sheet.Range["H8"].Value = "0.75" # 設置I9單元格為日期格式 sheet.Range["I9"].NumberFormat = "yyyy-mm-dd" sheet.Range["I9"].Value = "2023-10-26" # 也可以是DateTime對象
列寬與行高
自動或手動調整列寬和行高,以優(yōu)化內容顯示。
# 自動調整所有已用列的寬度(在基礎轉換中已演示) # sheet.AllocatedRange.AutoFitColumns() # 手動設置第一列的寬度為20個字符 sheet.Columns[0].ColumnWidth = 20 # 手動設置第二行的行高為30磅 sheet.Rows[1].RowHeight = 30
合并單元格
合并單元格常用于創(chuàng)建標題或分組信息。
# 合并A10到C10的單元格 sheet.Range["A10:C10"].Merge() sheet.Range["A10"].Text = "這是合并后的標題" sheet.Range["A10"].Style.HorizontalAlignment = HorizontalAlignType.Center sheet.Range["A10"].Style.VerticalAlignment = VerticalAlignType.Center
高級樣式與實用技巧
除了上述基礎樣式,我們還可以實現(xiàn)一些更高級的功能。
條件格式
條件格式允許你根據(jù)單元格的值自動應用樣式。
# 為A列設置條件格式:如果值大于50,則背景色為紅色 conditional_format = sheet.Range["A:A"].ConditionalFormats.AddCondition() conditional_format.FormatType = ConditionalFormatType.CellValue conditional_format.Operator = ComparisonOperatorType.GreaterThan conditional_format.Formula1 = "50" conditional_format.BackColor = Color.get_Red()
添加工作表與命名
一個Excel文件可以包含多個工作表。
# 添加一個新的工作表
new_sheet = workbook.Worksheets.Add("Summary Data")
# 也可以重命名現(xiàn)有工作表
sheet.Name = "Raw Data"
綜合示例代碼
將上述樣式設置整合到一個完整的示例中:
from spire.xls import *
input_csv_file = "G:/Documents/data_with_headers.csv"
output_excel_file = "styled_data_report.xlsx"
# data_with_headers.csv 內容如下:
# Product,Sales,Region,Date
# Laptop,1200,East,2023-01-15
# Mouse,80,West,2023-01-20
# Keyboard,150,East,2023-02-01
# Monitor,600,South,2023-02-10
# Webcam,45,North,2023-03-05
workbook = Workbook()
workbook.LoadFromFile(input_csv_file, ",", 1, 1)
sheet = workbook.Worksheets[0]
sheet.Name = "銷售數(shù)據(jù)"
# 設置標題行樣式 (第一行)
header_style = sheet.Range["A1:D1"].Style
header_style.Font.IsBold = True
header_style.Font.Size = 12
header_style.Font.Color = Color.get_White()
header_style.KnownColor = ExcelColors.DarkBlue
header_style.HorizontalAlignment = HorizontalAlignType.Center
header_style.VerticalAlignment = VerticalAlignType.Center
header_style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin
header_style.Borders[BordersLineType.EdgeBottom].Color = Color.get_White()
# 設置銷售額列(B列)為貨幣格式
sheet.Range[f"B2:B{sheet.Rows.Count}"].NumberFormat = "$#,##0.00"
# 也可以用:
#sheet.Range[2, 2, sheet.Rows.Count, 3].NumberFormat = "$#,##0.00"
# 設置日期列(D列)為日期格式
sheet.Range[f"D2:D{sheet.Rows.Count}"].NumberFormat = "yyyy/mm/dd"
# 自動調整所有列寬和行高
sheet.AllocatedRange.AutoFitColumns()
sheet.AllocatedRange.AutoFitRows()
# 添加一個新工作表作為摘要
summary_sheet = workbook.Worksheets.Add("數(shù)據(jù)摘要")
summary_sheet.Range["A1"].Text = "銷售數(shù)據(jù)分析報告"
summary_sheet.Range["A1"].Style.Font.IsBold = True
summary_sheet.Range["A1"].Style.Font.Size = 16
summary_sheet.Range["A1"].Style.HorizontalAlignment = HorizontalAlignType.Center
summary_sheet.Range["A1:C1"].Merge() # 合并標題單元格
summary_sheet.AllocatedRange.AutoFitColumns()
summary_sheet.AllocatedRange.AutoFitRows()
# 保存最終的Excel文件
workbook.SaveToFile(output_excel_file, ExcelVersion.Version2016)
print(f"CSV文件 '{input_csv_file}' 已成功轉換為并美化為 Excel文件 '{output_excel_file}'。")
輸出結果預覽:

結論
通過本文的詳細講解和豐富的代碼示例,我們看到了如何利用Python及其強大的庫,將枯燥的CSV數(shù)據(jù)轉換為美觀、結構化的Excel報告。從基礎的數(shù)據(jù)導入到復雜的樣式設置,包括字體、顏色、邊框、對齊、數(shù)字格式、列寬自適應乃至條件格式,Python都提供了直觀且高效的API。掌握這些技能,你將能夠自動化日常的數(shù)據(jù)處理任務,擺脫重復性勞動,大幅提升工作效率,并以更專業(yè)的方式呈現(xiàn)數(shù)據(jù)。
以上就是Python高效實現(xiàn)CSV數(shù)據(jù)轉換為規(guī)范的Excel文件的詳細內容,更多關于Python CSV數(shù)據(jù)轉Excel的資料請關注腳本之家其它相關文章!
相關文章
Python利用pynimate實現(xiàn)制作動態(tài)排序圖
這篇文章主要為大家詳細介紹了Python如何利用pynimate實現(xiàn)制作動態(tài)排序圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-02-02
python3 sorted 如何實現(xiàn)自定義排序標準
這篇文章主要介紹了python3 sorted 如何實現(xiàn)自定義排序標準,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python實現(xiàn)將一個帶鍵值特征的JSON數(shù)組轉換為JSON對象
這篇文章主要為大家詳細介紹了Python實現(xiàn)將一個帶鍵值特征的JSON數(shù)組轉換為JSON對象,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-11-11

