You need to enable JavaScript to run this app. 如何实现适配SSIS平文件上传的HTML批量转CSV/XLS自动化处理?
优惠活动
大模型
产品
解决方案
定价
更多

如何实现适配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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 21:06:01