如何实现适配SSIS平文件上传的HTML批量转CSV/XLS自动化处理?
自动化HTML转CSV适配SSIS的可落地方案
核心设计逻辑
完全匹配你的实际场景需求:
- 适配存量1000个HTML、每日20-30个新增文件的规模,内置增量识别逻辑,不会重复处理已完成转换的文件
- 每个HTML内的4个表格会单独导出为独立平文件,文件名关联原HTML标识,方便后续数据溯源
- 输出格式直接适配SSIS平文件读取要求,从根源避免编码乱码、列错位、单元格换行导致的解析错误
- 所有处理流程都在本地完成,避免在线转换工具带来的数据泄露风险
- 预留扩展接口,后续做列顺序调整、新增计算列的操作,可以直接在模板代码里加几行就能完成,不用重复写转换逻辑
零修改可直接复用的转换脚本
首先安装依赖,打开命令提示符直接执行两行命令即可,不需要额外配置环境:pip install pandas beautifulsoup4 lxml
然后把下面的代码存成html_to_csv.py,只需要修改代码开头标注的两个文件夹路径,其他逻辑不用动:
import os import pandas as pd from bs4 import BeautifulSoup # -------------------------- 仅需修改以下2个路径 -------------------------- # 存放所有HTML文件的根文件夹路径 html_source_dir = r"C:\你的HTML文件存储位置" # 转换后CSV/TXT文件的输出文件夹路径 csv_output_dir = r"C:\转换后文件的存储位置" # ----------------------------------------------------------------------- # 自动创建不存在的输出目录 os.makedirs(csv_output_dir, exist_ok=True) # 读取已处理文件清单,实现增量转换 processed_log_path = os.path.join(csv_output_dir, "已处理文件索引.txt") if os.path.exists(processed_log_path): with open(processed_log_path, "r", encoding="utf-8") as f: processed_file_set = set(f.read().splitlines()) else: processed_file_set = set() # 遍历源目录下所有HTML格式文件 for root, _, file_list in os.walk(html_source_dir): for file_name in file_list: # 仅处理未转换过的HTM/HTML文件 if file_name.lower().endswith((".html", ".htm")) and file_name not in processed_file_set: full_html_path = os.path.join(root, file_name) try: # 解析HTML内所有表格 with open(full_html_path, "r", encoding="utf-8") as f: page_soup = BeautifulSoup(f.read(), "lxml") tables = pd.read_html(str(page_soup)) # 逐个导出表格为CSV格式 for table_num, df in enumerate(tables, 1): # 预处理清理异常字符,避免SSIS读取出错 df = df.fillna("").replace(r"[\n\r\t]", "", regex=True) # 生成带原文件标识的输出名 output_file_name = f"{os.path.splitext(file_name)[0]}_表{table_num}.csv" # 导出为逗号分隔文件,设置适配SSIS的编码和引用规则 df.to_csv( os.path.join(csv_output_dir, output_file_name), index=False, encoding="utf-8-sig", sep=",", quoting=1 ) # 记录已处理的文件 processed_file_set.add(file_name) with open(processed_log_path, "a", encoding="utf-8") as f: f.write(file_name + "\n") print(f"转换完成:{file_name},共导出{len(tables)}个表格") except Exception as e: print(f"转换失败:{file_name},错误详情:{str(e)}")
自动化部署操作
- 把脚本文件设置成Windows任务计划程序的每日定时任务,到点自动运行,只会处理当天新增的HTML文件,不会重复跑存量的1000个老文件
- 导出的CSV文件采用逗号分隔、UTF-8带BOM编码、自动给含逗号的文本加双引号,SSIS平文件连接管理器直接就能读取,不需要额外做格式调整
- 后续需要做调整列顺序、新增派生列的操作,只需要在导出CSV的代码块里加几行DataFrame调整逻辑即可,不用重新写转换流程
无代码替代方案
如果不想使用Python脚本,可以用Windows自带的Power Automate Desktop搭建无代码流程:
- 拖拽配置定时触发逻辑
- 添加“读取文件夹内新文件”动作,筛选后缀为.html/.htm的文件
- 调用“从HTML提取表格”动作,直接导出为指定编码的CSV文件
- 全程不需要写代码,和脚本实现的功能完全一致
内容的提问来源于stack exchange,提问作者ason-1412
相关产品推荐
相关产品推荐

