ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3751|回复: 35

[原创] 分享关于非结构化Excel表格数据整合,抽取的方案

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-5 10:33 | 显示全部楼层 |阅读模式
本帖最后由 kaixinbuy 于 2023-4-5 10:42 编辑


大多数情况下,表格布局规范,一个sheet一个表格,表头一致,对这样的Excel sheet进行数据整合,只需要使用PowerQuery可以快速完成。

但也有很多情况下,Excel表格是不规范的,格式不统一的表格数据,对这些数据进行抽取,整合非常困难

例如,在我们的审计项目中,需要合并,抽取,整合上万个表头和内容都不规范的非结构化Excel报价单文件。

这些Excel文档存在的困难点包括:
  • 1.布局不规范:每个Excel文件可能包含数十个Sheet(最多可能40-50个sheet),每个Sheet可能包含不固定位置,不固定表头的不固定表格
  • (同一个表头字段可能有多种写法,例如产品名的表头可能有:产品名称,产品名,ProductName,名称,商品名,MeteralName等)。
  • 2.表头不统一:合并单元格表头、多栏、多行表头、表头顺序不一致、表头写法描述不一致
  • 3.内容不规范:同一个公司名、项目名、产品名、产品规格或属性有多种写法和描述方式

基于手工复制粘贴整理这些数据,几乎无法完成任务。最终我们基于 tablemerge.com 非结构化文档结构化抽取模型,使用SQL语言,在数万个sheet上运行SQL抽取:
  • 自动识别复杂表头和行列:
  •      通过定制的SQL解析引擎和正则表达式解析引擎,在SQL中嵌入正则表达式实现抽取
  • 自动识别合并单元格、多栏、多行表头
  • 自动分析文档布局和版面,自动将文档分块和表格抽取
  • 一个SQL在上万个不规范的非结构化Excel文档上运行
  • 导出成结构化数据

下面是一个SQL语法和例子:在SQL中模糊抽取和匹配需要的列名:稍微看过SQL的同学都能看懂。
  1. INSERT into tb_results  --抽取结果保存到数据库表

  2. SELECT name,--抽取字段表头,最大1000个字段name as fieldname,--传统的SQL字段,匹配Excel表头
  3. `regular_expression` as fieldname,--用正则匹配多个可能的表头值,例如(产品名称|产品名|商品名|ProductName)
  4. `regular_expression`.match(text) as fieldname,--基于文本匹配表头(默认不写match部分就是匹配文本)
  5. `regular_expression`.match(text).output(color) as fieldname,--基于字体颜色去匹配表头
  6. `regular_expression`.match(text).offset(1,0).output(color) as fieldname,--提取某个匹配单元格的右边单元格的值

  7. FROM excels;--选择需要抽取的1-1000个sheet,同时运行数据抽取
复制代码



(注意:这个SQL是只能在tablemerge.com客户端才能支持的语法。在传统数据库中是不能运行的)
这样就实现了一次SQL在上千个Sheet上进行模糊抽取和自动布局分析,筛选出所需要的目标表格数据。




同时可以利用SQL函数对抽取结果进行进一步数据清洗和数据转换(类似ETL)。

这里的核心是扩展SQL数据库,对需要抽取的目标字段可以进行扩展和模糊识别。二是自动进行目标表格区域识别,自动对sheet布局进行分析,因为一个sheet上有不固定位置不固定出现的非目标表格和描述内容。让SQL只关心我们需要的目标字段,排除非结构化数据的各种干扰。以及自动处理合并单元格,多栏表头,多行表头等情形,这些都在SQL引擎后台自动处理。



如果您有类似的需求场景,或者有这里未考虑到的情况(例如我们还可以用这个SQL引擎处理逆透视表,矩阵表格,等情况,这里只讨论了最基本的情形),欢迎讨论。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-7 07:39 | 显示全部楼层
wanghan519 发表于 2023-4-7 07:23
也就是说tablemerge可以自动把不规范的表头规范化,然后自己写的是匹配同一个字段不规范写法的正则表达式。 ...

匹配表头只是最基础的需要的功能,90%的情况下select的正则内容就是字段名,少数情况下像上面的有多行表头。

而我们遇到不规范的1000个Excel Sheet需要整合的时候,最大的困难来自于:一个sheet里有N个可能在任意位置的表格区域。而不是总在第一行就是表头。同时表头里含有大量非目标区域,比如多段备注,不相干的表格区域等。

这时候tablemerge.com的表头匹配+自动化的Layout分析就体现出强大的价值了。

图片1.png
2023-04-07 07-33-05屏幕截图.png
你可以在1000个上面这种messy sheet上,随意select你需要的字段。



TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-18 11:29 | 显示全部楼层
更新一下:最新版本不需要SQL了。  可视化配置了。

TA的精华主题

TA的得分主题

发表于 2023-4-5 18:44 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这种是在线工具吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-5 18:46 | 显示全部楼层
不是在线工具。数据在你本机处理,在你自己电脑上运行。

TA的精华主题

TA的得分主题

发表于 2023-4-6 06:00 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kaixinbuy 发表于 2023-4-5 18:46
不是在线工具。数据在你本机处理,在你自己电脑上运行。

我点击try,需要注册的,然后 start,看见这个上传文件uploaddocument的界面。应该是在线工具吧。如果是在线工具,可以看看我的日志,
https://club.excelhome.net/blog-226915-2023.html?_dsign=bc8e55d6

也有正则表达式转换,还有数据清洗的功能
Screenshot_2023-04-06-05-55-08-343_cn.uujian.browser.jpg

TA的精华主题

TA的得分主题

发表于 2023-4-6 06:06 来自手机 | 显示全部楼层
zpy2 发表于 2023-4-6 06:00
我点击try,需要注册的,然后 start,看见这个上传文件uploaddocument的界面。应该是在线工具吧。如果是在 ...

$40/1000 rows

这个usdollar...

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-6 08:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2023-4-6 06:06
$40/1000 rows

这个usdollar...

upload doucment是upload到你本地的客户端web服务器。

这个价格适合于sheet数量大,结构杂乱,单个表数据条数并不大的场景。(比如我们审计项目里的报价单,财务报表的特点就是sheet一共近万个,每个sheet里的数据只有几百到几千条,难就难在杂乱分散的小表太多。)

如果单表已经十万几十万条的明细数据,不需要用工具直接copy出来更快。

TA的精华主题

TA的得分主题

发表于 2023-4-6 10:55 | 显示全部楼层
本帖最后由 opiona 于 2023-4-6 11:59 编辑

Excel表格是不规范的,格式不统一的表格数据

我的思路是: 创建一个标题表  一个标准标题 对应多个可能的实际标题
打开文件 获取实际标题, 对应位置写上 标准标题  就变成了一个 标准的表格
然后再用字典+数组 或者另存后用SQL    进行数据获取

QQ截图20230406105246.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-6 12:32 | 显示全部楼层
opiona 发表于 2023-4-6 10:55
Excel表格是不规范的,格式不统一的表格数据

我的思路是: 创建一个标题表  一个标准标题 对应多个可能的 ...


你上来就会卡在第一步:打开文件 获取实际标题

实际的数据是,例如下面这个sheet(来自本论坛的数据),
每个sheet的表格位置不固定,表头行你不知道在哪行哪列开始,带跨行跨列合并单元格的表头。带各种非目标区域的描述信息等。




2023-04-06 12-28-11屏幕截图.png


如果只是简单的单行表头,第一行就是表头,那种太简单不在讨论范围。






TA的精华主题

TA的得分主题

发表于 2023-4-6 15:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kaixinbuy 发表于 2023-4-6 08:25
upload doucment是upload到你本地的客户端web服务器。

这个价格适合于sheet数量大,结构杂乱,单个表 ...

本地的客户端web服务  器?

具体哪里?本地客户端?
具体如果操作?

TA的精华主题

TA的得分主题

发表于 2023-4-6 15:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kaixinbuy 发表于 2023-4-6 12:32
你上来就会卡在第一步:打开文件 获取实际标题

实际的数据是,例如下面这个sheet(来自本论坛的数据 ...

能不能演示一个实例?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 10:45 , Processed in 0.042089 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表