HTM是网页常用的超文本标记文件格式,很多时候我们从网页导出的数据会以HTM形式保存,想要进一步分析处理就需要把这些数据转成Excel表格。不同结构的HTM文件适合不同的转换方式,下面会逐一介绍可行的方案。

方法一:Excel直接打开HTM文件
如果HTM文件里主要是规整的表格数据,不需要额外处理,用Excel直接打开是最简单的方式,操作步骤如下:
- 打开Excel软件,点击左上角的文件选项,选择打开
- 在文件类型下拉框中选择所有文件或者网页文件
- 找到需要转换的HTM文件,点击打开,Excel会自动解析文件里的表格内容
- 确认数据无误后,点击文件另存为,选择Excel工作簿格式保存即可
这种方式适合结构简单的HTM文件,但是遇到嵌套复杂、包含大量非表格内容的HTM时,解析出来的数据可能会错乱。
方法二:用Python脚本批量转换HTM到Excel
如果需要处理多个HTM文件,或者HTM结构比较复杂,用Python编写自动化脚本会更高效,这里需要用到lxml库解析HTML,openpyxl库操作Excel。
环境准备
首先安装需要的依赖库,在命令行执行下面的命令:
pip install lxml openpyxl
转换脚本实现
下面的脚本可以提取HTM文件里所有表格的数据,写入到Excel的不同工作表中:
from lxml import etree
from openpyxl import Workbook
def htm_to_excel(htm_path, excel_path):
# 读取HTM文件内容
with open(htm_path, 'r', encoding='utf-8') as f:
content = f.read()
# 解析HTML内容
html = etree.HTML(content)
# 提取所有表格元素
tables = html.xpath('//table')
# 创建Excel工作簿
wb = Workbook()
# 移除默认创建的空白工作表
wb.remove(wb.active)
# 遍历每个表格,写入Excel
for idx, table in enumerate(tables, 1):
# 创建新的工作表,命名为表格1、表格2...
ws = wb.create_sheet(title=f'表格{idx}')
# 提取表格所有行
rows = table.xpath('.//tr')
for row in rows:
# 提取行内的单元格,包含th和td
cells = row.xpath('.//th|.//td')
# 获取单元格文本内容,处理空值
row_data = [cell.text.strip() if cell.text else '' for cell in cells]
# 写入当前行数据
ws.append(row_data)
# 保存Excel文件
wb.save(excel_path)
print(f'转换完成,文件已保存至{excel_path}')
if __name__ == '__main__':
# 替换为你的HTM文件路径和输出的Excel路径
htm_path = 'test.htm'
excel_path = 'output.xlsx'
htm_to_excel(htm_path, excel_path)脚本说明
脚本中使用<table>标签定位HTM里的表格,用XPath提取行和单元格数据。如果HTM里的表格有合并单元格的情况,上面的脚本可能无法正确识别,需要额外添加合并单元格的处理逻辑,根据rowspan和colspan属性调整数据写入的位置。
转换注意事项
- HTM文件的编码需要确认,如果打开出现乱码,把脚本里的encoding参数改成对应的编码格式,比如gbk
- 如果HTM里有特殊字符,比如&、<、>,解析的时候lxml库会自动处理,不需要额外操作
- 转换完成后建议核对前几行数据,确认没有漏数据或者数据错位的情况
如果HTM文件是从特定系统导出的,可能包含隐藏的样式标签或者脚本内容,手动转换前可以先打开HTM文件查看结构,确认表格数据的位置再选择对应的转换方式。
HTM转ExcelHTML表格解析XPathPythonopenpyxl修改时间:2026-06-03 21:57:43