(已解决) 集算器外部库 ZipCli 的问题
大佬们,关于外部库 ZipCli 的使用,我想求助一些问题,恳请大佬们得闲时给予帮助:
我用的是 Mac 社区版集算器,在官网下载了外部库 (大概 600 多兆),设置好之后是这样的:
重启集算器后,写的代码如下,我要解压一个后缀是 ofd 的文件,Zip 是能直接解压 ofd 文件的。
A | |
1 | =zip_open("/Users/bianqi/Downloads/efapiao.ofd") |
2 | =zip_extract(A1,"*.xml","/Users/bianqi/Downloads/aa") |
3 | >zip_close(A1) |
但出现了报错,报错提示和堆栈截图如下:
虽然报错了,但在指定的路径下确实生成了两个文件,但也只是起到了类似 zip@u()加压缩的功能,并没有发生抽取指定后缀名文件的动作。zip@u() 也会报错,但的确解压缩了。
以上现象说明,本机外部库的设置是有效的,且相关函数也能运行。但是跟预期有点出入:
1、zip_open() 中的路径必须写成全路径,集算器中设置的主路径和相对路径用法在该函数中不起作用;
2、同样,zip_extract() 中的第三参数也是一个路径,必须显式全路径指定,也不适用于默认的主路径或者相对路径的写法,且文件夹不会自动生成,需事先手工创建;
3、zip_extract() 中的 2 参 ". 后缀 ",不支持递归获取子文件夹中的所有. 后缀的文件,抽取不出来。
拿我提供的 efapiao.ofd 为例,我希望能抽取到解压后 Doc_0 文件夹下,Attchs 文件夹里的 original_invoice.xml 文件,该如何 extract。
上述问题恳请大佬们有空时帮忙看看,给予帮助指导,谢谢!🙏 🙏
附上 ofd 文件,ofd 可以直接修改后缀为 zip 或者 rar,解压后就可以看到整体的结构和内容。而 java 是能直接读取 ofd 的,不用事先修改后缀。
帖子中提到的关于 ZipCli 的问题已经解决,感谢 spl 大佬的迅速回应🙏 🙏
这个 ZipCli 功能对财务解析 OFD 电子发票相当助力,666👍 👍 👍 用 VBA 代码量很大,写到吐血。
ZipCli 处理压缩包确实很方便,但它是一个外部库,在桌面版的集算器中用不了。
这里提供另一种方法,在 WIN 系统里可以用 PowerShell 引用.Net 中的 ZipFile 类处理压缩包,正好集算器中有 system 函数可以执行 powershell 的命令。以下截图中代码格 A1 是 powershell 命令脚本,其中的 %s 用来保留参数位,后续 format 函数可以传递值进去。system@o 正好返回 xml 文本,效果等同于 file(xmlfile).read(),最后用 xml 函数解析。作个记录:
最新的集算器桌面版安装包内置了 ZipCli 外部库,可安装新版本直接使用外部库函数。
大佬,谢谢关注。但你说的内置 ZipCli 我玩不起来,说是不能识别表达式:
但确实是有这个函数存在,函数提示里有:
你方便的时候能指导一下如何用起来吗?谢谢!
请检查一下:
1. 安装目录 esProcDesk 下是否有 extlib 目录?
2.raqsoftConfig.xml 中是否有 extLibsPath 和 importLibs 配置?
谢谢大佬指导。你说直接使用,我理解错了,还是需要以下两样东西:
1、下载 extlib 外部库
2、把 extlib 文件夹所在路径 (路径按本机自行配置) 写到 raqsoftConfig.xml 文件中:
这下就方便了,SPL,Omnipotent👍 👍 👍
新版集算器桌面版不用这两个步骤,安装后可以直接使用。您是不是同目录覆盖安装的?
我都删的一点不剩重新安装的桌面版😂 因为之前的旧版本出现问题了,我全删掉了。
6 月 2 日更新的版本。你要不 double check 一下?
我们测试了没问题,所有跟您详细了解下,以便找出问题根源。再确认下是今天下载的安装包吗?
不是今天,是昨天在那个数速英文网下载安装的😄 差一天也不行吗?
你这样一说,我得重新安装操作一遍。
这下载速度😂 😂 ,到时再跟你汇报情况哈。你说没问题那肯定没问题,肯定是我这边没弄好。🙏
这个功能是昨天加的,在我回帖后下载安装包才可以。
大佬,可以了,最新的桌面版自带了外部库 extlib 中的 ZipCli,配置文件里也有相应的设置。
SPL,无所不能,遥遥领先👍 👍 👍 Omnipotent & Yaoyao ahead!!!
再贴一个在集算器 MAC 版中用 bash 命令 unzip 读取压缩包中指定文件的方法,就当作个记录: