Python 寫入數(shù)據(jù)到 Excel 中
前言
在數(shù)據(jù)處理和報(bào)告生成等工作中,Excel 表格是一種常見且廣泛使用的工具。然而,手動(dòng)將大量數(shù)據(jù)輸入到 Excel 表格中既費(fèi)時(shí)又容易出錯(cuò)。為了提高效率并減少錯(cuò)誤,使用 Python 編程語(yǔ)言來(lái)自動(dòng)化數(shù)據(jù)寫入 Excel 表格是一個(gè)明智的選擇。Python 作為一種簡(jiǎn)單易學(xué)且功能強(qiáng)大的編程語(yǔ)言,其豐富的模塊能夠處理各種任務(wù),包括操作 Excel 文件。通過(guò)編寫 Python 代碼,您可以輕松地將數(shù)據(jù)寫入 Excel 表格,無(wú)論是小規(guī)模的數(shù)據(jù)集還是大規(guī)模的數(shù)據(jù)處理,使用 Python 自動(dòng)化數(shù)據(jù)寫入過(guò)程都可以大大提高工作效率,減少人為錯(cuò)誤的發(fā)生。
本文中將介紹如何使用 Python 寫入數(shù)據(jù)到 Excel 表格,提供更高效和準(zhǔn)確的 Excel 表格數(shù)據(jù)寫入方案,從而簡(jiǎn)化數(shù)據(jù)處理流程并節(jié)省寶貴的時(shí)間和精力。本文主要包含以下幾個(gè)方面:
-
Excel 數(shù)據(jù)寫入相關(guān)介紹
-
通過(guò) Python 寫入文本或數(shù)值到 Excel 單元格
-
通過(guò) Python 寫入數(shù)組到 Excel 工作表
-
通過(guò) Python 寫入 CSV 數(shù)據(jù)到 Excel 工作表
-
通過(guò) Python 寫入 XML 數(shù)據(jù)到 Excel 工作表
本文所使用的方法需要用到 Spire.XLS for Python,可從官網(wǎng)下載或通過(guò) PyPI 安裝:
pip install Spire.XLS
Excel 數(shù)據(jù)寫入相關(guān)介紹
-
本文所使用的 API 中,使用 Workbook 類來(lái)代表一個(gè) Excel 工作簿。在操作 Excel 工作簿時(shí),可以使用該類下的 LoadFromFile() 方法從文件讀取 Excel 工作簿進(jìn)行操作或直接通過(guò)創(chuàng)建 Workbook 的對(duì)象從而創(chuàng)建工作簿進(jìn)行操作。需要注意的是,新建的 Excel 工作簿默認(rèn)有三個(gè)工作表。
-
同時(shí),該 API 還提供 Worksheet 類和一系列方法、屬性來(lái)對(duì)工作表及其中的單元格數(shù)據(jù)、格式等內(nèi)容進(jìn)行操作。
-
表格數(shù)據(jù)的主要來(lái)源有 CSV 文件、文本、數(shù)組、XML 文件等。當(dāng)我們需要制作報(bào)告等方便查看和分析的表格時(shí),通過(guò)程序?qū)⑦@些類型的表格數(shù)據(jù)寫入到 Excel 表格中可以實(shí)現(xiàn)高效精確的表格生成。
-
Worksheet.Range[str] 屬性用于獲取指定單元格或指定單元格范圍。其中,單元格和單元格范圍的表示方法與 Excel 相同,即 “字母 + 數(shù)字” 表示單元格,“字母 + 數(shù)字:字母 + 數(shù)字” 表示單元格范圍,如 “A1” 和 “A1:C3”。
-
Workbook.SaveToFile(str, FileFormat) 方法用于保存 Excel 工作簿到文件,可將 FileFormat 枚舉類型作為參數(shù)設(shè)置保存的文件格式。
通過(guò) Python 寫入文本或數(shù)字?jǐn)?shù)據(jù)到 Excel 單元格
使用 Workbook 類直接創(chuàng)建 Excel 工作簿或載入工作簿之后,可以使用該類下的方法設(shè)置格式及寫入數(shù)據(jù)。以下是寫入文本或數(shù)值到 Excel 單元格操作示例:
-
導(dǎo)入所需模塊。
-
創(chuàng)建 Workbook 類的對(duì)象以創(chuàng)建 Excel 工作簿。
-
使用 Workbook.Worksheets.Clear() 方法刪除默認(rèn)的工作表,并使用 Workbook.Worksheets.Add() 方法新建一個(gè)工作表。
-
通過(guò) Worksheet 類下的屬性設(shè)置單元格格式。
-
通過(guò) Worksheet.Range[].Text 屬性添加文本或數(shù)值到指定單元格。
-
使用 Workbook.SaveToFile() 方法保存工作簿到文件并關(guān)閉工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import Worksheet from spire.xls import FileFormat # 創(chuàng)建Excel工作簿 workbook = Workbook() # 刪除工作表并創(chuàng)建新的工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("成員信息") # 設(shè)置單元格格式 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 # 寫入表頭數(shù)據(jù) worksheet.Range["A1"].Text = "序號(hào)" worksheet.Range["B1"].Text = "姓名" worksheet.Range["C1"].Text = "年齡" worksheet.Range["D1"].Text = "職業(yè)" # 寫入其他數(shù)據(jù) 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 = "醫(yī)生" # 保存工作簿 workbook.SaveToFile("output/寫入數(shù)據(jù)到單元格.xlsx", FileFormat.Version2016) workbook.Dispose()
復(fù)制代碼
輸出的 Excel 工作簿:
通過(guò) Python 寫入數(shù)組到 Excel 工作表
使用 Worksheet.InsertArray(arrObject: List[], firstRow: int, firstColumn: int, isVertical: bool) 方法可以插入數(shù)組到 Excel 工作表中,同時(shí)可設(shè)置插入的位置及方式。以下是操作步驟介紹:
-
導(dǎo)入所需模塊。
-
創(chuàng)建 Workbook 對(duì)象以創(chuàng)建 Excel 工作簿。
-
使用 Workbook.Worksheets.Clear() 方法清除默認(rèn)的工作表,并使用 Workbook.Worksheets.Add() 方法新建一個(gè)名為 "銷售數(shù)據(jù)" 的工作表。
-
使用 Worksheet 類下的屬性設(shè)置單元格格式。
-
創(chuàng)建一個(gè)二維數(shù)組 tableArray,其中包含要插入到工作表的數(shù)據(jù)。
-
遍歷二位數(shù)組的每一個(gè)列表,使用 Worksheet.InsertArray() 方法將列表中的數(shù)據(jù)插入到工作表的指定單元格中。
-
使用 Workbook.SaveToFile() 方法將工作簿保存到指定的文件中并關(guān)閉工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import FileFormat # 創(chuàng)建Excel工作簿 workbook = Workbook() # 清除默認(rèn)工作表并新建工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("銷售數(shù)據(jù)") # 設(shè)置單元格格式 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 # 數(shù)組 tableArray = [ ["日期", "產(chǎn)品", "銷售額"], ["20220101", "產(chǎn)品A", "1000"], ["20220101", "產(chǎn)品B", "1500"], ["20220102", "產(chǎn)品A", "1200"], ["20220102", "產(chǎn)品B", "1800"], ["20220103", "產(chǎn)品A", "900"], ["20220103", "產(chǎn)品B", "1600"] ] # 將數(shù)據(jù)逐行插入工作表 i = 1 for array in tableArray: worksheet.InsertArray(array, i, 1, False) # 保存工作簿 workbook.SaveToFile("output/寫入數(shù)組到工作表.xlsx", FileFormat.Version2016) workbook.Dispose()
復(fù)制代碼
輸出的 Excel 工作簿:
通過(guò) Python 寫入 CSV 數(shù)據(jù)到 Excel 工作表
在將 CSV 數(shù)據(jù)寫入 Excel 表格時(shí),我們可以直接使用 Workbook.LoadFromFile () 方法載入 CSV 文件并保存為 XLSX 格式,從而將 CSV 文件直接轉(zhuǎn)換為 Excel 工作簿。再載入 CSV 文件時(shí),可通過(guò)分隔符作為參數(shù)來(lái)載入不同分隔符的 CSV 表格。以下是操作示例:
-
導(dǎo)入所需模塊。
-
創(chuàng)建 Workbook 類的對(duì)象。
-
使用 Workbook.LoadFromFile() 方法載入 CSV 文件。
-
使用 Workbook.SaveToFile() 方法將 CSV 文件保存為 Excel 工作簿。
代碼示例:
from spire.xls import Workbook from spire.xls import FileFormat # 創(chuàng)建Workbook類的對(duì)象 workbook = Workbook() # 載入CSV文件 workbook.LoadFromFile("銷量統(tǒng)計(jì).csv", ",") # 保存為Excel工作簿 workbook.SaveToFile("output/寫入CSV數(shù)據(jù)到工作表.xlsx", FileFormat.Version2016) workbook.Dispose()
保存結(jié)果:
通過(guò) Python 寫入 XML 數(shù)據(jù)到 Excel 工作表
寫入 XML 數(shù)據(jù)到 Excel 工作表需要讀取 XML 數(shù)據(jù),然后先將表頭寫入工作表,然后再寫入對(duì)應(yīng)數(shù)據(jù)到單元格中。需要根據(jù) XML 表格數(shù)據(jù)的結(jié)構(gòu)調(diào)整代碼進(jìn)行寫入。 下面是操作步驟介紹:
-
導(dǎo)入模塊。
-
創(chuàng)建一個(gè) Workbook 類的對(duì)象。
-
清除默認(rèn)工作表并使用 Workbook.Worksheets.Add(str Name) 方法添加一個(gè)工作表。
-
設(shè)置工作表的單元格格式。
-
加載 XML 數(shù)據(jù),使用 xml.etree.ElementTree 模塊的 parse 方法解析 XML 文件,獲取根元素和子元素。
-
獲取第一個(gè) student 節(jié)點(diǎn)來(lái)確定列數(shù)和表頭。
-
寫入表頭,通過(guò)迭代表頭節(jié)點(diǎn)并將其作為列標(biāo)題寫入工作表。
-
寫入數(shù)據(jù),通過(guò)迭代每個(gè)學(xué)生節(jié)點(diǎn)和對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn),使用 Worksheet.SetValue(int rowIndex, int columnIndex, str Valuw) 將數(shù)據(jù)值寫入工作表。
-
使用 SaveToFile 方法將工作簿保存為指定路徑的 Excel 文件并釋放資源。
代碼示例:
from spire.xls import * from spire.common import * import xml.etree.ElementTree as ET # 創(chuàng)建一個(gè)Workbook類的對(duì)象 workbook = Workbook() # 清除默認(rèn)工作表并添加一個(gè)工作表 workbook.Worksheets.Clear() worksheet = workbook.Worksheets.Add("學(xué)生信息") # 設(shè)置單元格格式 for i in range(len(worksheet.Columns)): col = worksheet.Columns.get_Item(i) col.ColumnWidth = 10 # 加載 XML 數(shù)據(jù) xml_tree = ET.parse("學(xué)生信息.xml") xml_root = xml_tree.getroot() # 獲取第一個(gè)order節(jié)點(diǎn)來(lái)確定列數(shù)和表頭 first_student = xml_root.find("student") header = list(first_student.iter())[1:] # 跳過(guò)第一個(gè)節(jié)點(diǎn) # 寫入表頭 for col_index, header_node in enumerate(header, start=1): header_text = header_node.tag worksheet.SetValue(1, col_index, header_text) # 寫入數(shù)據(jù) row_index = 2 for student in xml_root.iter("student"): for col_index, data_node in enumerate(list(student.iter())[1:], start=1): # 跳過(guò)第一個(gè)節(jié)點(diǎn) 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 數(shù)據(jù):
<?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>john.doe@example.com</email> <phone>123-456-7890</phone> </contact> </student> </students>
輸出的 Excel 工作簿:
總結(jié):本文介紹了如何使用 Python 將各種數(shù)據(jù)保存為 Excel 表格,包括文本、數(shù)組、XML、CSV 等。通過(guò) Python 代碼,我們可以輕松地保存各種數(shù)據(jù)到 Excel 工作表中,實(shí)現(xiàn)批量操作,快速生成視覺(jué)友好地電子表格。Spire.XLS for Python 還支持許多其他功能,可前往 Spire.XLS for Python 教程查看。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由星星博客發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。