电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

#实践案例#Python插件实现Excel表万能导入云星空

来源:金蝶云社区作者:金蝶2024-09-1612

#实践案例#Python插件实现Excel表万能导入云星空

一、业务背景

        系统的单据都有标准的引入功能,但是引入模板似乎有点复杂,好不容易整理好了引入表格,引入的时候还会遇到各种未知的报错,对于引入数据的操作就不是太友好了,特别是本身就有一个数据清晰的表格,还要整理成系统的引入模板,就更心累了。

        于是,就有很多二开需求出现了,用户要求按照他们现成的表格,开发自定义的引入功能,例如,将某平台的订单数据导入到系统的销售订单、将某收银平台的收款数据,导入到收款单...等等。

        放到二开实现这个层面来讲,无非就是上传表格,读取表格数据,按照表格的格式读取需要的字段,然后生成单据。

        字段不同、表格格式不同、单据字段结构不同、再加上后期字段调整、功能维护...那也比较心累了

        于是,我就想着能不能开发一个“万能的Excel导入功能”,以你的表格为准,尽可能的不让你整理表格格式,只需要在系统里面做一个表格字段引入规则,然后就能实现各种表格的导入。

        “就像单据转换一样,Excel下推单据” 那么,开干!

二、解决方案

  •     Excel引入方案:首先,我们开发一个基础资料,Excel引入方案,来配置Excel引入规则

         那么,引入规则涉及哪些内容呢?

           ①首先Excel数据范围,支持按行序号类限定引入范围,也支持设置自定义条件表达式来自动判断结束行。

             还有分单设置,一个Excel表导入可能会生成多个单据。

image.webp


           ②然后是字段映射,选择单据上需要引入的字段,然后配置对应Excel哪个字段

            通过单据元数据解析来实现字段加载单据字段, 单独开发一个动态表单来作为字段选择窗口。

image.webp

image.webp

           ③对于不太规则的Excel表格,可能还有一些特殊表头信息,直接对应的表头字段,设置精确的行、列坐标来对应。

image.webp

后面可以逐步完善,再加入过滤条件配置、汇总引入配置...

  •    外部数据导入: Excel引入方案有了,我们就来实现解析引入方案,完成单据引入生成单据

          ①首先要开发一个公共的动态表单界面:外部数据导入

          ②选择要使用的引入方案

          ③再添加一个文件上传的控件,用来上传Excel表格,这是必须的!

          ④再加一些自定义参数设置:引入单据状态、引入失败自动暂存...等等

          ⑤这样大批量的数据处理,当然少不了进度条的使用,引入操作就更友好啦!

随便做一个Excel表引入测试一下:

image.webp

image.webp

image.webp

三、关键实现代码简析

        本案例全部采用Python插件实现,用C#当然也是可以实现的,个人更习惯用Python,更方便快速维护迭代。

        Excel引入方案,就是一个普通的基础资料开发,需要插件处理的核心就是单据字段选择,解析单据的元数据来实现就可以了,社区相关的资料很多,代码比较常规,这里就不做过多分享!

        下面主要看下从解析引入方案->导入数据生成单据的过程中,有一些关键代码可以分享一下。

  • 上传Excel表,读取Excel表的数据,写入数据库临时表

    本案例实现方式是把Excel表数据完全引入后,根据设置的数据范围筛序出需要的数据,然后构造新的DataTable,

    然后,将DataTable写入临时待用!

注意:上传的临时文件,读取完数据或,应该自动及时删除,以免服务器上留下一些不必要的垃圾文件!

①Excel文件上传

image.webp

②Excel文件完全读取,获得DataSet(根据ExcelSheet生成的多个DataTable集合)

然后进一步获取第一个页签的DataTable,本案例默认只读取第一个Sheet

image.webp

③解析读取到的Excel原始DataTable,读取临时表时可解析结束条件表达式作为判断结束条件

image.webp

---------------------------------------------------------------------------------------------------------------------------image.webp

然后根据数据范围重新创建新的DataTable后写入

#实践案例#Python插件实现Excel表万能导入云星空

一、业务背景 系统的单据都有标准的引入功能,但是引入模板似乎有点复杂,好不容易整理好了引入表格,引入的时候还会遇到各种未...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信