使用 Python 將數據寫入 Excel 工作表

在數據處理和報告生成等工作中,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 單元格操作示例:

  1. 導入所需模塊。
  2. 創建 Workbook 類的對象以創建 Excel 工作簿。
  3. 使用 Workbook.Worksheets.Clear() 方法刪除默認的工作表,並使用 Workbook.Worksheets.Add() 方法新建一個工作表。
  4. 通過 Worksheet 類下的屬性設置單元格格式。
  5. 通過 Worksheet.Range[].Text 屬性添加文本或數值到指定單元格。
  6. 使用 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 工作表中,同時可設置插入的位置及方式。以下是操作步驟介紹:

  1. 導入所需模塊。
  2. 創建 Workbook 對象以創建 Excel 工作簿。
  3. 使用 Workbook.Worksheets.Clear() 方法清除默認的工作表,並使用 Workbook.Worksheets.Add() 方法新建一個名爲 "銷售數據" 的工作表。
  4. 使用 Worksheet 類下的屬性設置單元格格式。
  5. 創建一個二維數組 tableArray,其中包含要插入到工作表的數據。
  6. 遍歷二位數組的每一個列表,使用 Worksheet.InsertArray() 方法將列表中的數據插入到工作表的指定單元格中。
  7. 使用 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 表格。以下是操作示例:

  1. 導入所需模塊。
  2. 創建 Workbook 類的對象。
  3. 使用 Workbook.LoadFromFile() 方法載入 CSV 文件。
  4. 使用 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 表格數據的結構調整代碼進行寫入。 下面是操作步驟介紹:

  1. 導入模塊。
  2. 創建一個 Workbook 類的對象。
  3. 清除默認工作表並使用 Workbook.Worksheets.Add(str Name) 方法添加一個工作表。
  4. 設置工作表的單元格格式。
  5. 加載 XML 數據,使用 xml.etree.ElementTree 模塊的 parse 方法解析 XML 文件,獲取根元素和子元素。
  6. 獲取第一個 student 節點來確定列數和表頭。
  7. 寫入表頭,通過迭代表頭節點並將其作爲列標題寫入工作表。
  8. 寫入數據,通過迭代每個學生節點和對應的數據節點,使用 Worksheet.SetValue(int rowIndex, int columnIndex, str Valuw) 將數據值寫入工作表。
  9. 使用 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 教程查看。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章