在当今数据驱动的时代,将数据高效地导入 Excel 文件已成为数据处理流程中的重要环节。凭借其强大的生态系统,Python 不仅能够通过自动化处理替代低效的人工录入,显著降低错误率,还能无缝支持大规模数据集的批量操作。通过整合 Python 对结构化与非结构化数据源的解析能力,以及 Spire.XLS for Python 库提供的 Excel 文件读写接口与格式控制功能,开发者可构建兼具高扩展性与强一致性的自动化数据集成方案。本文将详细介绍如何利用 Spire.XLS for Python 实现用 Python 高效导入数据到 Excel 文件。
- 使用 Spire.XLS for Python 将数据写入 Excel 文件
- 将 CSV 数据导入 Excel 工作表
- 跨 Excel文件复制数据与工作表
- 将 JSON 数据导入 Excel 工作表
- 将 XML 数据导入 Excel 工作表
- 将数据库数据导入 Excel 工作表
- 将 HTML 表格数据导入 Excel 工作表
安装 Spire.XLS for Python
此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python
使用 Spire.XLS for Python 将数据写入 Excel 文件
Spire.XLS for Python 是一款支持 Excel 文件读取、写入、编辑与转换的文档处理库。通过该库,开发者可以轻松实现将数据写入 Excel 工作表、应用格式样式以及将工作簿保存为文件等操作。
在将数据写入 Excel 工作表之前,我们可以使用 Python 提供的多种组件,如 json、xml.etree.ElementTree 和 BeautifulSoup,从不同的文件格式中读取和处理数据,包括 CSV、JSON、XML 和 HTML。这些库有助于将原始或半结构化数据转换为列表、字典或数据框架等更易于在 Python 中处理的结构。
在提取和结构化数据后,我们可以使用 Spire.XLS for Python 将其写入 Excel 工作簿。该库提供了对工作表创建、单元格数据输入、格式化以及导出 Excel 兼容格式的文件等操作的精确控制能力。
使用 Spire.XLS for Python 将数据写入 Excel 文件的操作步骤:
- 初始化工作簿
创建一个 Workbook 类的实例,以生成一个包含三个默认工作表的新 Excel 工作簿,或者使用 Workbook.LoadFromFile(filePath: str) 方法加载一个现有的 Excel 文件。 - 创建或获取工作表
使用 Workbook.Worksheets.get_Item() 方法获取工作表,或者使用 Workbook.Worksheets.Add(sheetName: str) 方法添加工作表。 - 准备数据
使用 Python 库(如 json、csv 或 xml.etree.ElementTree)提取并组织数据,将其转换为行列结构。 - 写入标题和数据
遍历数据,并使用 Worksheet.Range.get_Item(row: int, col: int).Value 属性为特定单元格分配值。 - 格式化工作表(可选)
使用 CellRange.ApplyStyle() 方法应用样式,使用 Worksheet.AutoFitColumn() 方法自动调整列宽,并设置边框或颜色等,以改善工作表的外观和可读性。 - 保存工作簿
使用 Workbook.SaveToFile(filePath: str, format: FileFormat) 方法将最终的 Excel 工作簿保存为需要的 Excel 格式文件。
将 CSV 数据导入 Excel 工作表
在数据组织与准备的过程中,将 CSV 文件数据导入 Excel 是一项基础操作。通过 Spire.XLS for Python 提供的 Workbook.LoadFromFile(filePath: str, separator: str) 方法,我们可以将结构化数据从 CSV 文件便捷地加载,并可转换为格式规范的 Excel 工作簿。同时,我们还可以通过指定合适的分隔符使用该方法加载普通文本文件中的表格。载入表格数据后,我们还可以对单元格格式、表格样式等进行设置,从而确保数据整洁可用,便于后续分析或生成报表。
以下是操作步骤:
- 创建 Workbook 类的实例。
- 调用 Workbook.LoadFromFile() 方法加载 CSV 数据,需指定文件路径和列分隔符(如逗号或制表符)。
- 通过 Workbook.Worksheets.GetItem(index: int) 获取首个工作表。
- (可选)使用 Worksheet.Range.GetItem(row: int, col: int).Value 属性将数据写入其他工作表。
- 按需调整格式后,通过 Workbook.SaveToFile(filePath: str, fileFormat) 保存结果文档。
- Python
from spire.xls import Workbook, FileFormat, BuiltInStyles
# 创建一个Workbook对象
workbook = Workbook()
# 从CSV或文本文件加载表格数据
workbook.LoadFromFile("Sample.csv", ",")
# 也可以加载文本文件:workbook.LoadFromFile("Sample.txt", "\t")
# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)
# 格式化表格
sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading1
for i in range(1, sheet.Rows.Count):
sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent1_20
for j in range(sheet.Columns.Count):
sheet.AutoFitColumn(j + 1)
# 保存工作簿
workbook.SaveToFile("output/CSV导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
跨 Excel 文件复制数据与工作表
处理多个 Excel 文件时,常需跨工作簿复制数据或整张工作表。借助 Spire.XLS for Python 的 Workbook 和 Worksheet 类,我们可通过编程实现此类操作,从而整合不同来源的数据,并且可以保留原始格式、公式及数据结构。
以下是操作步骤:
- 新建 Workbook 实例,通过 Workbook.LoadFromFile(filePath: str) 加载源 Excel 文件。
- 创建新的 Workbook 实例,使用 Workbook.Worksheets.Clear() 清空默认工作表。
- 仅复制数据:
- 遍历源工作簿中的工作表,通过 Workbook.Worksheets.Add(sheetName: str) 在目标工作簿中新建对应工作表。
- 使用 Worksheet.Range.GetItem().Value 属性读取源工作表中的单元格数据,并写入目标工作表的对应单元格中。
- 复制整个工作表:
- 通过 Worksheet.CopyFrom(sourceWorksheet) 方法完整复制源工作表内容到新工作表中。
- 调用 Workbook.SaveToFile() 保存新工作簿。
- Python
from spire.xls import Workbook, FileFormat
# 创建一个工作簿对象并加载Excel文件
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
# 创建另一个工作簿对象并清空其工作表
newWorkbook = Workbook()
newWorkbook.Worksheets.Clear()
# 从原工作簿读取数据并插入到新工作簿
for i in range(workbook.Worksheets.get_Item(0).Rows.Count):
for j in range(workbook.Worksheets.get_Item(0).Columns.Count):
# 添加一个新工作表
sheet = newWorkbook.Worksheets.Add(workbook.Worksheets.get_Item(0).Name)
# 写入数据
sheet.Range.get_Item(i + 1, j + 1).Value = workbook.Worksheets.get_Item(0).Range.get_Item(i + 1, j + 1).Value
# 将原工作簿的所有工作表复制到新工作簿
for i in range(workbook.Worksheets.Count):
# 添加一个新工作表(名称后加"-Copy")
newSheet = newWorkbook.Worksheets.Add(workbook.Worksheets.get_Item(i).Name + "-Copy")
# 将原工作表内容复制到新工作表
newSheet.CopyFrom(workbook.Worksheets.get_Item(i))
# 保存新工作簿
newWorkbook.SaveToFile("output/Excel导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
newWorkbook.Dispose()
将 JSON 数据导入 Excel 工作表
作为 API 和现代 Web 应用中常用的结构化数据格式,JSON 文件可通过 Python 内置的 json 模块进行解析,提取表格形式的数据。结合 Spire.XLS for Python 库,我们可以将解析后的数据写入 Excel 工作表,并通过格式化功能优化展示效果,便于数据分析、可视化或协作共享。
以下代码示例演示了如何导入 JSON 数据到 Excel 工作表:
- Python
from spire.xls import Workbook, FileFormat, BuiltInStyles
import json
# 加载JSON数据
with open("Sample.json", "r", encoding="utf-8") as f:
jsonData = json.load(f)
headers = list(jsonData[0].keys())
rows = [[str(item[key]) for key in headers] for item in jsonData]
# 创建工作簿实例
workbook = Workbook()
# 清除默认工作表并添加新工作表
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("JSON数据")
# 将表头和行数据写入工作表
for col, header in enumerate(headers):
sheet.Range[1, col + 1].Value = header
for row_idx, row_data in enumerate(rows):
for col_idx, value in enumerate(row_data):
sheet.Range[row_idx + 2, col_idx + 1].Value = value
# 应用样式并自动调整列宽
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading2
for row in range(1, sheet.Rows.Count):
sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent2_40
for col in range(sheet.Columns.Count):
sheet.AutoFitColumn(col + 1)
# 保存Excel文件
workbook.SaveToFile("output/JSON导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
将 XML 数据导入 Excel 工作表
XML 作为企业系统和数据流中广泛使用的层级数据格式,可通过 Python 的 xml.etree.ElementTree 模块解析并提取元素与属性。Spire.XLS for Python 支持将提取的层级数据按行列结构写入 Excel 工作表,将复杂的层次化内容转换为直观的二维表格,便于执行筛选、分析等操作。
以下代码示例演示了如何将 XML 数据导入到 Excel 工作表:
- Python
from spire.xls import Workbook, FileFormat, BuiltInStyles
import xml.etree.ElementTree as ET
# 加载XML数据
tree = ET.parse("Sample.xml")
root = tree.getroot()
first_order = root.find("Record")
# 提取表头
headers = [elem.tag.replace('_', ' ').title() for elem in first_order]
# 提取所有记录数据
rows = [
[order.find(tag.lower().replace(" ", "_")).text or "" for tag in headers]
for order in root.findall("Record") # 遍历所有Record节点
]
# 使用Spire.XLS创建Excel工作簿
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("XML数据")
# 写入表头和数据
for col, header in enumerate(headers):
sheet.Range[1, col + 1].Value = header
for row_idx, row_data in enumerate(rows):
for col_idx, value in enumerate(row_data):
sheet.Range[row_idx + 2, col_idx + 1].Value = value
# 应用样式和自动调整列宽
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading3
for row in range(1, sheet.Rows.Count):
sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent3_40
for col in range(sheet.Columns.Count):
sheet.AutoFitColumn(col + 1)
# 保存Excel文件
workbook.SaveToFile("output/XML导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
将数据库数据导入 Excel 工作表
在报表生成和商业智能场景中,将数据库记录导入 Excel 是常见需求。通过 Python 的 SQLite3、PyODBC 或 PyMySQL 等数据库连接库,可建立与各类关系型数据库的连接并执行 SQL 查询获取记录。利用 Spire.XLS 的 Workbook 类和 Worksheet.Range.GetItem().Value 属性,我们可以将关系型数据集转换为可读性强且便于移植的 Excel 工作簿,从而完美适配生成报告、仪表盘或数据归档等应用场景。
以下代码示例演示如何从 SQLite 数据库提取记录并生成 Excel 工作表:
- Python
import sqlite3
from spire.xls import Workbook, FileFormat, BuiltInStyles
# 连接到SQLite数据库
conn = sqlite3.connect("Sample.db")
cursor = conn.cursor()
# 获取数据库中所有表名
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = [row[0] for row in cursor.fetchall()]
# 创建Excel工作簿
workbook = Workbook()
workbook.Worksheets.Clear() # 清除默认工作表
# 遍历每个表并导出到工作表
for table_name in tables:
# 从表中获取所有数据
cursor.execute(f"SELECT * FROM {table_name}")
rows = cursor.fetchall()
# 获取列名
column_names = [desc[0] for desc in cursor.description]
# 添加以表名命名的新工作表
sheet = workbook.Worksheets.Add(table_name)
# 写入表头行
for col_index, column_name in enumerate(column_names):
cell = sheet.Range.get_Item(1, col_index + 1)
cell.Value = str(column_name)
# 写入数据行
for row_index, row in enumerate(rows, start=2):
for col_index, value in enumerate(row):
sheet.Range.get_Item(row_index, col_index + 1).Value = str(value)
# 应用样式
sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading4
for i in range(1, sheet.Rows.Count):
sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent4_20
for j in range(sheet.Columns.Count):
sheet.AutoFitColumn(j + 1)
# 关闭数据库连接
conn.close()
# 保存Excel文件
workbook.SaveToFile("output/SQLDB导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
将 HTML 表格数据导入 Excel 工作表
网页中呈现的 HTML 表格数据,可通过 Python 的 BeautifulSoup 库进行抓取和结构化处理。结合 Spire.XLS for Python,我们可以将这些网络数据源写入 Excel 工作表,并对表格样式与排版结构等进行自定义,生成专业级 Excel 表格。
以下代码示例演示如何从 HTML 提取表格数据并写入 Excel 工作表:
- Python
from bs4 import BeautifulSoup
from spire.xls import Workbook, FileFormat, BuiltInStyles
# 读取HTML文件
with open("Sample.html", "r", encoding="utf-8") as f:
soup = BeautifulSoup(f, "html.parser")
# 查找表格
table = soup.find("table")
rows = table.find_all("tr")
# 将表格数据提取为二维列表
data = []
for row in rows:
cells = row.find_all(["th", "td"])
data.append([cell.get_text(strip=True) for cell in cells])
# 创建新的Excel工作簿
workbook = Workbook()
# 清除默认工作表并新建工作表
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("HTML数据")
# 遍历数据
for row_index, row in enumerate(data, start=1):
for col_index, cell_value in enumerate(row, start=1):
# 将表格数据写入工作表的单元格
sheet.Range.get_Item(row_index, col_index).Value = str(cell_value)
# 格式化表格
sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading2
for i in range(1, sheet.Rows.Count):
sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent4_60
for j in range(sheet.Columns.Count):
sheet.AutoFitColumn(j + 1)
# 保存Excel文件
workbook.SaveToFile("output/HTML导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
申请临时 License
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。