You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL从含多表与注释的Excel工作表提取及拆分表格?

提取Excel工作表中的表格数据(含多结构表格场景)

一、提取单一表格(排除注释文本)

你的原始OPENROWSET语句会默认读取整个工作表,导致注释行混入结果。可以通过两种方式精准提取表格内容:

  1. 指定精确单元格范围
    如果清楚表格的具体位置(比如从A2开始到C20结束),直接在工作表名后追加范围即可:
SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                'Excel 12.0 Xml; HDR=YES; Database=C:\your_file.xlsx;', 
                'SELECT * FROM [MySheet$A2:C20]');
  • 注意HDR=YES表示范围第一行是表头,若指定范围第一行是原始数据,改成HDR=NO,查询时用F1、F2这类默认列名。
  1. 筛选排除注释行
    如果不确定精确范围,先读取全表再过滤掉注释和空行:
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                'Excel 12.0 Xml; HDR=YES; Database=C:\your_file.xlsx;', 
                '[MySheet$]')
WHERE 
    -- 排除全空行
    COALESCE(客户名称, 订单金额, 下单日期) IS NOT NULL
    -- 排除带注释关键字的行(根据实际注释格式调整)
    AND 客户名称 NOT LIKE '//%'
    AND 客户名称 NOT LIKE '备注:%';

把示例中的列名换成你实际的表头字段即可。

二、提取同工作表中多个结构不同的表格

不需要先全导入再拆分,直接通过指定不同单元格范围就能单独提取每个表格,效率更高:

假设工作表内有两个独立表格:

  • 表格1:A1:C10,表头在A1
  • 表格2:E1:G15,表头在E1

分别查询的语句如下:

-- 提取表格1
SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                'Excel 12.0 Xml; HDR=YES; Database=C:\your_file.xlsx;', 
                'SELECT * FROM [MySheet$A1:C10]');

-- 提取表格2
SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                'Excel 12.0 Xml; HDR=YES; Database=C:\your_file.xlsx;', 
                'SELECT * FROM [MySheet$E1:G15]');

如果不知道精确范围,但能通过表头识别表格起始位置,也可以用子查询定位(相对繁琐,优先推荐范围指定):
比如表格2的表头是"订单ID",位于E列:

WITH full_data AS (
    SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS row_num
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                    'Excel 12.0 Xml; HDR=NO; Database=C:\your_file.xlsx;', 
                    '[MySheet$]')
)
SELECT F5 AS 订单ID, F6 AS 商品名称, F7 AS 数量
FROM full_data
WHERE 
    row_num >= (SELECT MIN(row_num) FROM full_data WHERE F5 = '订单ID')
    AND COALESCE(F5, F6, F7) IS NOT NULL;

注意事项

  • 确保安装了Microsoft Access Database Engine 2010 Redistributable(对应ACE.OLEDB.12.0驱动),64位系统要保证驱动位数和SQL Server位数匹配。
  • 若工作表名含空格,要给名称加引号,比如[My Sheet$A1:C10]。
  • 无表头的表格需将HDR设为NO,使用F1、F2等默认列名。

内容的提问来源于stack exchange,提问作者Tomas Vileikis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:39:19