在數據處理和報告生成等工作中,Excel 表格是一種常見且廣泛使用的工具。然而,手動將大量數據輸入到 Excel 表格中既費時又容易出錯。爲了提高效率並減少錯誤,使用 Python 編程語言來自動化數據寫入 Excel 表格是一個明智的選擇。Python 作爲一種簡單易學且功能強大的編程語言,其豐富的模塊能夠處理各種任務,包括操作 Excel 文件。通過編寫 Python 代碼,您可以輕鬆地將數據寫入 Excel 表格,無論是小規模的數據集還是大規模的數據處理,使用 Python 自動化數據寫入過程都可以大大提高工作效率,減少人爲錯誤的發生。
本文中將介紹如何使用 Python 寫入數據到 Excel 表格,提供更高效和準確的 Excel 表格數據寫入方案,從而簡化數據處理流程並節省寶貴的時間和精力。本文主要包含以下幾個方面:
- Excel 數據寫入相關介紹
- 通過 Python 寫入文本或數值到 Excel 單元格
- 通過 Python 寫入數組到 Excel 工作表
- 通過 Python 寫入 CSV 數據到 Excel 工作表
- 通過 Python 寫入 XML 數據到 Excel 工作表
本文所使用的方法需要用到 Spire.XLS for Python,可從官網下載或通過 PyPI 安裝:
pip install Spire.XLS
Excel 數據寫入相關介紹
- 本文所使用的 API 中,使用 Workbook 類來代表一個 Excel 工作簿。在操作 Excel 工作簿時,可以使用該類下的 LoadFromFile() 方法從文件讀取 Excel 工作簿進行操作或直接通過創建 Workbook 的對象從而創建工作簿進行操作。需要注意的是,新建的 Excel 工作簿默認有三個工作表。
- 同時,該 API 還提供 Worksheet 類和一系列方法、屬性來對工作表及其中的單元格數據、格式等內容進行操作。
- 表格數據的主要來源有 CSV 文件、文本、數組、XML 文件等。當我們需要製作報告等方便查看和分析的表格時,通過程序將這些類型的表格數據寫入到 Excel 表格中可以實現高效精確的表格生成。
- Worksheet.Range[str] 屬性用於獲取指定單元格或指定單元格範圍。其中,單元格和單元格範圍的表示方法與 Excel 相同,即 “字母 + 數字” 表示單元格,“字母 + 數字:字母 + 數字” 表示單元格範圍,如 “A1” 和 “A1:C3”。
- Workbook.SaveToFile(str, FileFormat) 方法用於保存 Excel 工作簿到文件,可將 FileFormat 枚舉類型作爲參數設置保存的文件格式。
通過 Python 寫入文本或數字數據到 Excel 單元格
使用 Workbook 類直接創建 Excel 工作簿或載入工作簿之後,可以使用該類下的方法設置格式及寫入數據。以下是寫入文本或數值到 Excel 單元格操作示例:
- 導入所需模塊。
- 創建 Workbook 類的對象以創建 Excel 工作簿。
- 使用 Workbook.Worksheets.Clear() 方法刪除默認的工作表,並使用 Workbook.Worksheets.Add() 方法新建一個工作表。
- 通過 Worksheet 類下的屬性設置單元格格式。
- 通過 Worksheet.Range[].Text 屬性添加文本或數值到指定單元格。
- 使用 Workbook.SaveToFile() 方法保存工作簿到文件並關閉工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import Worksheet from spire.xls import FileFormat # 創建Excel工作簿 workbook = Workbook() # 刪除工作表並創建新的工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("成員信息") # 設置單元格格式 worksheet.Range["A1:D1"].Style.Font.IsBold = True worksheet.Rows[0].RowHeight = 30 worksheet.Range["A1:D1"].Style.Font.Size = 12 worksheet.Range["A2:D4"].Style.Font.Size = 11 # 寫入表頭數據 worksheet.Range["A1"].Text = "序號" worksheet.Range["B1"].Text = "姓名" worksheet.Range["C1"].Text = "年齡" worksheet.Range["D1"].Text = "職業" # 寫入其他數據 worksheet.Range["A2"].Text = "1" worksheet.Range["A3"].Text = "2" worksheet.Range["A4"].Text = "3" worksheet.Range["B2"].Text = "約翰" worksheet.Range["B3"].Text = "喬伊" worksheet.Range["B4"].Text = "邁克" worksheet.Range["C2"].Text = "35" worksheet.Range["C3"].Text = "28" worksheet.Range["C4"].Text = "42" worksheet.Range["D2"].Text = "工程師" worksheet.Range["D3"].Text = "律師" worksheet.Range["D4"].Text = "醫生" # 保存工作簿 workbook.SaveToFile("output/寫入數據到單元格.xlsx", FileFormat.Version2016) workbook.Dispose()
輸出的 Excel 工作簿:
通過 Python 寫入數組到 Excel 工作表
使用 Worksheet.InsertArray(arrObject: List[], firstRow: int, firstColumn: int, isVertical: bool) 方法可以插入數組到 Excel 工作表中,同時可設置插入的位置及方式。以下是操作步驟介紹:
- 導入所需模塊。
- 創建 Workbook 對象以創建 Excel 工作簿。
- 使用 Workbook.Worksheets.Clear() 方法清除默認的工作表,並使用 Workbook.Worksheets.Add() 方法新建一個名爲 "銷售數據" 的工作表。
- 使用 Worksheet 類下的屬性設置單元格格式。
- 創建一個二維數組 tableArray,其中包含要插入到工作表的數據。
- 遍歷二位數組的每一個列表,使用 Worksheet.InsertArray() 方法將列表中的數據插入到工作表的指定單元格中。
- 使用 Workbook.SaveToFile() 方法將工作簿保存到指定的文件中並關閉工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import FileFormat # 創建Excel工作簿 workbook = Workbook() # 清除默認工作表並新建工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("銷售數據") # 設置單元格格式 worksheet.Range["A1:D1"].Style.Font.IsBold = True worksheet.Rows[0].RowHeight = 30 worksheet.Range["A1:D1"].Style.Font.Size = 12 worksheet.Range["A2:D4"].Style.Font.Size = 11 # 數組 tableArray = [ ["日期", "產品", "銷售額"], ["20220101", "產品A", "1000"], ["20220101", "產品B", "1500"], ["20220102", "產品A", "1200"], ["20220102", "產品B", "1800"], ["20220103", "產品A", "900"], ["20220103", "產品B", "1600"] ] # 將數據逐行插入工作表 i = 1 for array in tableArray: worksheet.InsertArray(array, i, 1, False) # 保存工作簿 workbook.SaveToFile("output/寫入數組到工作表.xlsx", FileFormat.Version2016) workbook.Dispose()
輸出的 Excel 工作簿:
通過 Python 寫入 CSV 數據到 Excel 工作表
在將 CSV 數據寫入 Excel 表格時,我們可以直接使用 Workbook.LoadFromFile () 方法載入 CSV 文件並保存爲 XLSX 格式,從而將 CSV 文件直接轉換爲 Excel 工作簿。再載入 CSV 文件時,可通過分隔符作爲參數來載入不同分隔符的 CSV 表格。以下是操作示例:
- 導入所需模塊。
- 創建 Workbook 類的對象。
- 使用 Workbook.LoadFromFile() 方法載入 CSV 文件。
- 使用 Workbook.SaveToFile() 方法將 CSV 文件保存爲 Excel 工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import FileFormat # 創建Workbook類的對象 workbook = Workbook() # 載入CSV文件 workbook.LoadFromFile("銷量統計.csv", ",") # 保存爲Excel工作簿 workbook.SaveToFile("output/寫入CSV數據到工作表.xlsx", FileFormat.Version2016) workbook.Dispose()
保存結果:
通過 Python 寫入 XML 數據到 Excel 工作表
寫入 XML 數據到 Excel 工作表需要讀取 XML 數據,然後先將表頭寫入工作表,然後再寫入對應數據到單元格中。需要根據 XML 表格數據的結構調整代碼進行寫入。 下面是操作步驟介紹:
- 導入模塊。
- 創建一個 Workbook 類的對象。
- 清除默認工作表並使用 Workbook.Worksheets.Add(str Name) 方法添加一個工作表。
- 設置工作表的單元格格式。
- 加載 XML 數據,使用 xml.etree.ElementTree 模塊的 parse 方法解析 XML 文件,獲取根元素和子元素。
- 獲取第一個 student 節點來確定列數和表頭。
- 寫入表頭,通過迭代表頭節點並將其作爲列標題寫入工作表。
- 寫入數據,通過迭代每個學生節點和對應的數據節點,使用 Worksheet.SetValue(int rowIndex, int columnIndex, str Valuw) 將數據值寫入工作表。
- 使用 SaveToFile 方法將工作簿保存爲指定路徑的 Excel 文件並釋放資源。
代碼示例:
from spire.xls import * from spire.common import * import xml.etree.ElementTree as ET # 創建一個Workbook類的對象 workbook = Workbook() # 清除默認工作表並添加一個工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("學生信息") # 設置單元格格式 for i in range(len(worksheet.Columns)): col = worksheet.Columns.get_Item(i) col.ColumnWidth = 10 # 加載 XML 數據 xml_tree = ET.parse("學生信息.xml") xml_root = xml_tree.getroot() # 獲取第一個order節點來確定列數和表頭 first_student = xml_root.find("student") header = list(first_student.iter())[1:] # 跳過第一個節點 # 寫入表頭 for col_index, header_node in enumerate(header, start=1): header_text = header_node.tag worksheet.SetValue(1, col_index, header_text) # 寫入數據 row_index = 2 for student in xml_root.iter("student"): for col_index, data_node in enumerate(list(student.iter())[1:], start=1): # 跳過第一個節點 value = data_node.text header_text = list(header[col_index - 1].iter())[0].tag worksheet.SetValue(row_index, col_index, value) row_index += 1 # 保存工作簿爲新的 Excel 文件 workbook.SaveToFile("output/寫入XML到工作表.xlsx") workbook.Dispose()
部分 XML 數據:
<?xml version="1.0" encoding="UTF-8"?> <students> <student> <id>1</id> <name>John Doe</name> <major>Data Science</major> <gpa>3.8</gpa> <age>20</age> <gender>Male</gender> <contact> <email>[email protected]</email> <phone>123-456-7890</phone> </contact> </student>
輸出的 Excel 工作簿:
總結:本文介紹瞭如何使用 Python 將各種數據保存爲 Excel 表格,包括文本、數組、XML、CSV 等。通過 Python 代碼,我們可以輕鬆地保存各種數據到 Excel 工作表中,實現批量操作,快速生成視覺友好地電子表格。Spire.XLS for Python 還支持許多其他功能,可前往 Spire.XLS for Python 教程查看。