Excel 插件使用说明
使用集算器桌面版的Excel插件,可在Excel中执行SPL脚本并获得结果集后填充到Excel中。
第 1 章 安装与配置
1、环境
要求64位的Windows和Excel,不能用32位的,否则出现异常。
判断Windows和Excel是否为64位的办法:
1、 Windows: 点击操作系统的【设置】-【系统】-【关于】
2、 Excel:打开Excel,点击【文件】-【账户】-【关于Excel】,弹出对话框里会显示当前Excel版本,如下所示:
About Microsoft® Excel® 2019 Microsoft® Excel® 2019MSO (Version 2202 Build 16.0.14931.20116) 64Bit Product ID: 00405-32554-86889-AAOEM Session ID: 5DCA85DD-F5BE-4570-8CE4-4D56EF93273D |
语言:请安装与操作系统语言相同的集算器桌面版,即如果操作系统是英文的,则装英文版的集算器桌面版,如果操作系统是中文的,则装中文版的集算器桌面版,否则容易出现乱码等问题。
如果中文windows操作系统安装中文集算器桌面版后,会出现乱码等现象,请检查操作系统如下配置:
【设置】->【时间和语言】->【语言】->【管理语言设置】->【更改系统区域设置】
看看这里是否配置的中文,如果不是,改成中文即可
2、依赖文件
ExcelSpl.xll:插件文件,位于【集算器桌面版安装目录】/esProcDesk/bin
scu-Excel-xll-2.10.jar、xll4j-0.0.2.jar:依赖jar,位于【集算器桌面版安装目录】/esProcDesk/lib
ExcelSpl.ini:配置文件,位于【集算器桌面版安装目录】/esProcDesk/config
esproc_template.xla:宏文件位于【集算器桌面版安装目录】/esProcDesk/bin目录下
3、加载ExcelSpl.xll插件
打开Excel,点击菜单【文件】->【选项】->【加载项】,找到管理Excel加载项,点击【转到】弹出加载项列表选择窗口,点击【浏览】,选择【集算器桌面版安装目录】/esProcDesk/bin下的插件ExcelSpl.xll,确定新增的加载项为勾选状态后,重启Excel生效。成功加载后再查看加载项如下图:
加载成功后,Excel中将增加spl()函数。
当前步骤容易遇到的问题:
情况1:
选择完插件文件ExcelSpl.xll点确定后,出现鼠标一直转,始终不进入下一步,此时可以强制中断Excel并重启Excel。
重启Excel后会提示:某某加载项加载不成功,是否需要禁用?
点击禁用,然后重新按上述操作重新加载ExcelSpl.xll插件即可成功。
情况2:
选择完插件文件ExcelSpl.xll点确定后,出现鼠标一直转,始终不进入下一步,此时可以强制中断Excel并重启Excel。
重启Excel后没有任何提示,此时打开加载项配置页面,会发现插件可能已经加载成功(出现前述加载成功画面)。
情况3:
选择完插件文件ExcelSpl.xll点确定后,出现鼠标一直转,始终不进入下一步,此时可以强制中断Excel并重启Excel。
重启Excel后没有任何提示,此时打开加载项配置页面,会发现插件并没有加载成功,重复操作加载,依旧出现卡死现象,始终无法加载成功
此时解决办法是先关闭Excel,然后再打开windows的注册表,添加如下注册表项:
补充说明:
1、 这里OPEN项的值为字符串/R再加上由双引号括起来的字符串,串的内容是加载项ExcelSpl.xll的全路径文件名
2、 注册表OPEN项的位置,取决于Excel安装版本,不同版本,这个路径可能不一样,比如Excel2019是
【计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Excel\Options】
低一些的版本可能是
【计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Excel\Options】
具体位置和版本相关,根据实际情况灵活应对
添加完后,打开Excel,此时可以发现加载项配置页面里已经有插件了,表示加载成功。
4、在Excel中加载宏文件
打开【集算器桌面版安装目录】\esProcDesk\bin目录,找到esproc_template.xla文件,把它复制到【Excel 安装目录 \XLSTART】目录下,例如:C:\Program Files\Microsoft Office\Office16\XLSTART,只有放在此目录下的宏文件,Excel才会在启动时自动加载,放别的目录无法加载成功。
打开Excel,点击菜单【文件】->【选项】->【信任中心】->【信任中心设置】->【宏设置】中勾选【启用所有宏】,然后重启Excel。
补充说明:
1、 不同版本的Excel该目录可能不同,所以一定要打开Excel找到这个目录,再把esproc_template.xla复制过去
2、 esproc_template.xla中定义了一个宏及其热键(ctrl-enter),用于处理多返回值,有冲突时可以修改热键。
3、 spl()函数返回单值时,不需要用到这个宏,也不必加载此宏文件。
5、配置 SPL IDE 主目录
SPL IDE 中要配置【主目录】,被调用的脚本文件(.splx)必须位于主目录下,否则找不到,配置方法如下:
打开 SPL IDE,点击菜单【工具】->【选项】->选择【环境】->找到【主目录】
配置完主目录后,需要重启 SPL IDE 和Excel才会生效
6、日志
可以通过日志文件查看异常信息,日志文件位于%appdata%\esproc\tmp\Excel.log
第 2 章 在 Excel 中使用 spl() 函数
安装配置好之后,Excel中会增加spl()函数,其功能是在Excel单元格中执行SPL脚本并获得计算后的结果集。
其语法有两种:
l spl(exp, arg1, …)
参数说明:
exp |
以=开头的SPL语法的表达式串。其中用问号代表参数引用,?1对应第一个参数,?2对应第二个参数,依此类推 |
arg1,… |
参数值,参数可以有0个或多个,至多30个。可以填入常数,或引用当前Excel单元格,允许单格和片区。注意:Excel 插件识别不了某些参数的数据类型时,可使用 E() 函数进行数据类型转换。比如:日期、日期时间、时间等类型。 |
复杂计算需求,执行用SPL写好的脚本文件,格式为
l spl(splx(…), … )
参数说明:
splName() |
脚本文件名称,无后缀,统一用.splx,且必须加上() 脚本文件中定义的参数,按顺序和后面赋予的参数匹配 |
arg1,… |
同前面规则 |
spl()函数可能返回单值、一维数组或二维数组。
示例1:无参数
生成100以内的整数随机数:
计算结果:
示例2:单个参数
有如下Excel文件,第一列是随机数的范围,第二列是根据第一列给定的范围,生成一个相应范围内的整数随机数:
计算结果:
把B2单元格拖动复制到每一个格子:
示例3:表达式中有双引号
有如下日期数据:
由于某些原因,这些数据没有日期格式,无法被Excel识别,被当成了普通的数字串,现在需要把它们变成日期数据。
SPL有很简单的写法:=date(A2,"yyyyMMdd"),这样会按照"yyyyMMdd"的格式,把A2解析成日期。但是这样的SPL脚本里本身含有双引号,写到spl()函数里,需要使用Excel的规则对双引号进行转义,即把"写成"",如下所示:
运算结果如下:
然后把B2拖动复制到每一行,结果如下:
补充说明:
1、 需要先把日期数据所在单元格类型设为文本类型,设置方法如下:
选中单元格->鼠标右键点击【设置单元格格式】->在【数字】tab页中选择【文本】
2、 确认设置成功的标准是单元格的左上角有个绿色的小三角,如果按照1中操作,没有出现绿色小三角,可以双击单元格进入编辑状态,然后移开焦点即可
示例4:多个参数
有如下Excel文件,其中r, g, b, a分别代表颜色中的红、绿、蓝及透明分量:
现需要在右边增加一列,算出每一行颜色分量组合成的颜色值,输入SPL代码如下:
代码中分别用?1,?2,?3,?4对应第一个参数A2,第二个参数B2,第三个参数C2,第四个参数D2
输入完上述表达式后,即可算出当前行的颜色值如下:
然后再把E2单元格拖动复制到每一个格子
示例5:一行片区参数
有Excel文件如下图所示,现需要对每行数据去掉最大值和最小值,再求中位数,把结果填在最右侧的列中:
在I2单元格中输入=spl("=?.conj().sort().m(2:-2).median()",A2:H2),Excel将把A2:H2单元格片区组成的数组传给SPL表达式"=?.conj().sort().m(2:-2).median()",替代其中的参数?,返回去掉最大值和最小值后的中位数,计算结果:
补充说明:
1、Excel会自动把数组参数处理成二维数组,即使事实上只一行行(或一列)也是如此,因此在SPL脚本里需要用conj()拼成单层序列。
此时再把I2单元格的表达式向下拖拽复制到下面的每一行,即可自动算出所有行的中位数,如下图所示:
示例6:一列片区参数
有Excel文件如下图所示,现需要对每列数据去掉最大值和最小值,再求中位数,把结果填在最底下的行中:
在A14单元格中输入=spl("=?.conj().sort().m(2:-2).median()",B1:B13),Excel将把B1:B13单元格片区组成的数组传给SPL表达式"=?.conj().sort().m(2:-2).median()",替代其中的参数?,返回去掉最大值和最小值后的中位数,计算结果:
补充说明:
1、Excel会自动把数组参数处理成二维数组,即使事实上只一行行(或一列)也是如此,因此在SPL脚本里需要用conj()拼成单层序列。
此时再把B14单元格的表达式向右拖拽复制到右边的每一列,即可自动算出右边所有列的中位数,如下图所示:
示例7:多行多列片区参数
有如下Excel文件:
现在需要在右侧增加一列,计算取样数据的累计平均值,即第一天的记录只算第一天的平均值,第二天的记录则算前两天总的平均值,第三天则算前三天的总平均值,依此类推。同样的,计算平均值之前需要先去掉最大值和最小值,计算结果如下:
在Z3单元格中输入表达式:=spl("=?.conj().sort().m(2:-2).avg()",$B$3:Y3),此时算出结果5.40
从表达式可以看出,传入的参数$B$3:Y3,第一个单元格加了$符号,因为要算的是累计平均,在向下复制该表达式时要保持始终从B3单元格开始累计,所以加$。
把Z3单元格的表达式拖动复制到每一行,最后算出所有行的累计平均值
示例8:混合参数
有如下Excel文件,为每一天24个小时的整点取样数据:
现在需要在右侧增加一列,找出截止到当天本月所有取样数据中的最大n个值的平均值,n取决于Z列的数据。
在AA3中输入SPL表达式如下:
=spl("=?1.top@2(-?2).avg()", $B$3:Y3, Z3)
第一个参数:=?1.top@2(-?2).avg() 是spl公式,表示对参数?1算topn,n由参数?2决定;然后再对topn算平均值
第二个参数:$B$3:Y3,是传给spl公式的参数,对应?1
第三个参数:Z3,是传给spl公式的参数,对应?2
把AA3的公式拖动复制到每一行,最后结果如下:
示例9:返回一维数组
生成10个100以内的随机整数,按顺序填入第一列中:
输入表达式后,按ctrl-enter执行在esproc_template.xla中定义的宏,将计算结果填充到相邻格中:
表达式返回一维数组时,按ctrl-enter后,会把数组成员以当前格为起始格,向下依次填入一列单元格中。不使用ctrl-enter则只会将第一个成员填入表达式所在格。
示例10:返回二维数组
现有Employee.xlsx文件内容如下:
现需要按部门DEPT字段统计每个部门的人数,在A1格输入SPL脚本如下:
Employee.xlsx最好放在 SPL IDE 主目录下,这样可以不写路径名找到,否则要在表达式中写上全路径名
按ctrl-enter将计算结果填入相邻单元格:
补充说明:
1、 返回二维数组时也需要按ctrl-enter触发填充动作,以当前格为起始格,向右向下依次填入一片单元格中。不使用ctrl-enter时只会在表达式所在格填入数组的第一个成员。
2、 SPL脚本中如果有",需要按Excel规则进行转义,写成""。
示例11:动态拼SPL表达式
有如下Excel文件:
现在需要在右侧增加一列,计算取样数据的累计汇总值,汇总函数由Z列给出的函数名决定,如果是median,则算中位数;如果是avg则算平均值;sum则求和;依此类推。
在AA3单元格中输入表达式:=spl("=?.conj()."&Z3&"()",$B$3:Y3),第一个参数"=?.conj()."&Z3&"()"是动态拼出的SPL表达式,第二个参数$B$3:Y3传入从B3到Y3组成的数组。
传入参数$B$3:Y3中,第一个单元格加了$符号,因为算的是累计汇总,在向下复制该表达式时要保持始终从B3单元格开始累计,该单元格不能变化。
把AA3单元格的表达式拖动复制到每一行,最后算出所有行的累计汇总值。
第 3 章 SPL 的编辑
某些计算的SPL表达式可能很复杂,甚至不止一句,直接在Excel中编辑时很不方便,SPL IDE 提供了Excel Copy/Paste功能,可以将编辑好的代码复制到Excel中使用
示例12:用 SPL IDE 生成复杂SPL脚本
有Excel数据文件如下所示:
现在需要在底下增加一行,计算1月份中,每个时辰的取样数据的平均值,希望写一个表达式,就把整行的平均值都算出来,不需要每个格子都复制一遍表达式。
计算结果如下所示:
本例需要把B2:Y33作为参数,打开 SPL IDE,定义参数如下:
注意:这里参数名称必须是B2:Y33。
编辑脚本:
A |
||
1 |
=E('B2:Y33') |
/将传入的二维数组参数'B2:Y33'变成序表,第一行当列名。因为参数名和单元格同名,要加上单引号区分 |
2 |
=to(24).("avg('"+string(~)+"'):'"+string(~)+"'") |
/因为列名为1-24,为了简化书写,动态拼出24个列的汇总表达式 |
3 |
=A1.groups(;${A2.concat@c()}) |
/将汇总表达式拼入groups函数里,算出所有字段的平均值 |
4 |
return A3(1).array() |
/将结果记录转成单层序列并返回 |
接着点击菜单【编辑】->【复制】->【Excel 复制】,此时即可把代码复制到剪贴板上。
回到Excel文件,在单元格B34中,按ctrl-v即可把代码粘贴进来,如下所示:
此代码返回的是一维数组,按ctrl-enter,把返回数组值按顺序向右填到一行单元格上,最后结果如下所示:
补充说明:
1、当返回结果为一维数组时,扩展方式默认为纵向,用户可以在 Excel 中点击【加载项】-【SPL】-【Show Setting…】选择扩展方式:【Horizontal display】未勾选状态表示纵向扩展,勾选则为横向扩展。按 ctrl-enter 后,纵向扩展时结果集向下按顺序填充单元格,横向扩展时结果集向右按顺序填充单元格
2、当传给SPL脚本的参数是一片(单行、单列、多行多列)单元格时,会自动组成两层序列,此时在SPL脚本中可以用E()函数转成序表
3、参数的规则和单行代码一样,用?1表示第一个参数,?2表示第二个参数,依此类推
示例13:返回 SPL IDE 中修改脚本
接上例,代码复制到Excel中使用后,我们可能把 SPL IDE 关了,代码也没有保留,此时如果需要修改此代码,直接在Excel里修改肯定不方便,我们可以用 SPL IDE 的Excel Paste的功能把SPL脚本复制回 SPL IDE 中修改,操作方法如下:
在Excel中选中spl完整代码,按ctrl-c把代码复制到剪贴板上,然后打开 SPL IDE,点击菜单【编辑】->【粘贴】->【Excel 粘贴】,此时即可把代码原样恢复到 SPL IDE 中,如下所示:
示例14:超长SPL脚本
现有Employee.xlsx文件(该文件必须放在 SPL IDE 的主目录下)内容如下:
需要对该文件做查询,查询结果只需要显示EID,NAME,GENDER,DEPT,SALARY,BIRTHDAY,HIREDATE,STATE这几个字段,SURNAME字段不用显示,查询条件如下:
此例中需要传到SPL脚本中的参数有B1, B2, D1, D2, F1, F2
打开 SPL IDE,首先定义参数如下:
编辑脚本如下:
接着点击菜单【编辑】->【复制】->【Excel 复制】,此时即可把多行代码复制到剪贴板上。
再打开Excel,在单元格A4中,按ctrl-v,就把代码粘贴进来了,如下所示:
由于Excel表达式中的字符串有长度限制,超长代码复制至Excel时会自动被拆成多段,每段长度不超过240,代码段用\结尾,表示代码尚未结束,下一个参数依旧是代码
输入完上述代码后,按ctrl-enter,结果如下:
示例15:直接调用SPL脚本文件
对于较长的SPL代码,也可以不把SPL脚本复制到Excel中,而是在spl()函数里直接调用SPL脚本文件。如上例,我们把SPL脚本文件存为【SPL IDE 主目录】\Example15.splx,然后在Excel的A4单元格中写入如下表达式:
从表达式中可以看出,直接调用脚本文件的语法是:=spl("脚本文件名(?n……)",参数n….),脚本有几个参数,括号里就写几个问号,和传入参数的对应关系规则与直接写代码是一样的,都是?1对应第一个参数,?2对应第二个参数,依此类推
输入完上述代码后,按ctrl-enter,结果如下:
英文版
大佬, 请问在 Excel 中使用 spl 语句输出结果时是不是有行数限制 (65535 行)?
比如, 在 excel 中输入 =spl(“=65536.([~])”) 结果就呈现不出来了。
还有, 用 file 或者 T 函数读取 xlsx 文件,结果超过 65535 行时输出为空。
这个行数限制能解决吗?现在企业报表的数据量超过 6 万行是很普遍的。
在 Excel 中,超过 65536 行就无法出结果了,尽管可以导出行数不受限制的结果文件,但是非常不方便。
希望了解为什么会有这样的限制,以及能否去掉这个限制。谢谢。
SPL 没有这个限制,在 IDE 中用 T 函数没有这个问题,如果还是发现,可以再提详细一些。
插件有可能是被 VBA 限制的,传输字符串有限制。这么大的表,自己在 IDE 算好吧,插件可能不合适搞这么大数据量的东西。
大佬,谢谢回复!
我就是想着用 excel 插件方便。
现在企业报表的数据量很容易就超过 65535 行,十几万行,几十万行很常见。
excel 现在最大行数是 1048576 行,16384 列。
所以, 麻烦你在 excel(office 365) 里试一下:
=spl(“=65536.([~])”) 这个结果是空。但是,
=spl(“=65535.([~])”) 这个能输出 65535 行结果。
还请帮忙试试,看一下能不能解决这个输出限制,谢谢!
这可能不是 SPL 能解决的。
插件表达式送出和获取返回值要通过 VBA 实现,VBA 本身有些限制,比如传送的表达式的长度不能超过 256 字符,但 Excel 本身的表达式超过 256 字符却没问题,传输值的长度可能也有类似的问题,如果是这种情况我们没办法解决。
话说回来,这么大的表,还是事先用代码生成好一点吧。从插件送来送去,速度也比较慢。
不是 VBA 的限制。应该是集算器底层的限制。6 万行数据也不算大。如果这个问题不能解决,将严重影响用户体验。
毕竟用户更习惯于在 Excel 中操作。希望能有解决办法。
excel 插件我觉得挺好用的,本想着付费也用。
这行数限制倒是成了一个疙瘩。
VBA 还不是照样能输出 104 万行,只要 dim 足够的数组维度。
spl 插件的 VBA 代码里可以改吗?😄
还有一个问题:
生成 10 万行结果,export 输出到外部 xlsx 格式,结果依然是 10 万行;
输出成 csv 格式, 就截成 65535 行了。
刚使用 spl 插件,忽然发现有 6 万多行的限制,在 Excel 上,感觉也太坑了,好在还没有付费,付费就亏大了;麻烦看看能不能再扩大行数,excel 的 xlsx 格式都有 100 多万行的限制呢;还有,输出的 csv 格式,超过 10 万行的数据,为啥要截成 6 万多行输出呢?不能全部在一张 csv 表中?感觉好奇葩😂 麻烦这些都要改下呗,让消费者有好的体验。
我们目前还不能确定是不是 VBA 的限制,这要再去研究。VBA 本身数组支持很大,不表示插件可以传输很大的数据集,Excel 对外自定义函数接口和它固有函数并不是同一套东西(我们也很奇怪为什么不是)。
把代码贴出来看看,什么情况下会发生导出 csv 会截断,我们发现不了这种现象。csv 原则上可以写出数百万行甚至数亿行都没问题。
插件能不能扩大返回值的行数,不是我们说了算的,这取决于 Excel 开放的接口,得去研究,或者您能研究出成果告诉我们如何做也可以。
至于导出 csv 被截短,确如您所说,这没道理,SPL 没有这个动机。SPL 历史应用中数百万行的文本很常见,没听说过这种事。所以,碰到这种问题,先不要急于下结论,再想想和试试原因在哪里。 SPL 代码有错当然也是有可能的,但不可能是动机,错误也不会过于明显,毕竟这是被用过无数次的功能。
感谢回复。
我现在了解到,SPL 插件在 Excel 中处理数据时,是通过 VBA 来传输数据,而 VBA 对此可能有一定的限制。
那我想,比如,Power Query 或者 Power Pivot,它们可以把处理后的数据毫无限制地加载到工作表,我想,SPL 是否可以通过类似的方式来进行,而不是非要通过一种古老的技术 (VBA) 来实现?
SPL 是一个好用的工具,但它在 Excel 中的这种限制,作为用户是难以接受的。希望官方认真考虑这个问题,真正解释清楚底层原理:为什么会这样、怎样解决。
感谢。
我也是这样觉得呢。
另外,请查看这篇文章及跟帖:
VBA 一次性批量导入数据至 ACCESS 中最大行数限制 -Excel VBA 程序开发 -ExcelHome 技术论坛 -
跟帖中有几个解决方法,SPL 是否可以借鉴?期待更完美的版本。
Power 系列都是它微软一家的产品,这不可同日而语。
Excel 提供了 API,允许第三方编些程序(也就是 VBA)扩充它的函数库,现在 Excel 里用到的 SPL() 函数本质上是个 VBA 函数,然后在这个函数中(的 VBA 代码)再去和 SPL 服务通信取到计算结果。
Excel 固有的函数并没通过这个接口来调用,我们也不知道为什么它会设计成这样(通常会把所有函数调用体系设计成一样,不区分固有的还是第三方的,SPL 就是这样,第三方增加的函数和固有函数没什么区别,但微软不这么设计应该也有它的理由),但反正就是不同,第三方函数接口就是有限制(我们已知的表达式长度就有限制,而 Excel 固有表达式多长都行)。
所以,这个问题是可以去研究,但我们目前没确定的把握能解决(但也要考虑解决它的成本,如果把 Excel 翻个底掉也许可行)。
在这之前,建议直接写出大数据集的 csv/xlsx(你说的导出 csv 长度限制我们无法再现)。
如果需要从 SPL 环境中计算出大结果集返回,可以再试试剪贴板(这个是纯粹 SPL 和 OS 的功能,不涉及 VBA 过渡了)。
还有这篇文章,建议借鉴一下:
【VBA 研究】用 VBA 取得 EXCEL 有效行列数方法比较 _vba 获取有效行数 _ 宋哥的博客 -CSDN 博客
大佬, 关于导出 CSV 被截断的问题:
抱歉, 这个问题是我使用了不恰当的方法导致的
file(“filename.csv”).xlsexport@t (序表)
这样写虽然能出结果,但是会被截断成 65535 行, 而且速度很慢,应该是 xls 存在的问题。
以下两个方法好用 work like magic:
T(“filename.csv”, 序表)
file(“filename.csv”).export(序表)
spl 的 excel 插件于我个人而言比 Power Query,Pandas 都好用。好不容易发现这么好用的插件,却有诸多不如意,
不知道是使用插件的人少还是使用的时候都是很小的数据,怎么会没有用户反馈这些问题?
我看你们严总监也说,插件是表哥表妹的福音,相信这个插件并不是贵司的一个边缘产品。
java 高级编程语言怎么可能解决不了数组扩容的问题?帆软 FineReport 也是 java 写的,没有 65535 行的限制。
以下 3 个问题希望大佬能反馈给插件开发组:
1.Excel 里输入 =spl(“=fact(8)”) 这个阶乘出来的结果 -25216, 正确结果是 40320,
运算结果不能超过 2 的 15 次方。斐波那契数列也一样,运算结果超过 32768, 显示就会有问题;
2. 还是 excel 里结果呈现的问题,65535 行限制。测试很简单,=spl(“=65536.([~])”);
3.excel 里单元格区域传参也有 65535 行的限制。比如以下语句中 A1:G65535 这样就是极限, 引用区域超过 65535 行就不会出结果
=spl(“=T(““tbl.csv””,E(?.([[1-#],,[null]]).conj(~[1])))”,A1:G65535)
现在,十万行的数据根本不算什么,几十万行的 excel 表格比比皆是,如果 spl 插件没这个行数限制,用起来会非常顺手。
相信有很多重度依赖 excel 的表哥表姐表弟表妹正在使用或者将来会使用这个插件,如果能解决这些小问题,才是使用者的福音。
另外,wps 使用者也多,将来说不定会有更多人转向 wps,不知道你们有没有想法做个 wps 的插件。
fuyi
xlsexport 是把它当 XLS 格式在写,只能 65536 行,慢也是正常的。文件扩展名是 xlsx 才会支持 100 万行。csv 本身上是个文本文件,没必要用 xls 相关的方法
这事当然和 Java 没有一毛钱关系。
已经确认是 Excel API 中的基础对象问题,它的 rowID 用了 short,超过 16 位的就截断了。
Excel 后来提供了支持 32 位 rowID 的新版对象,但不兼容,用法和之前不一样,相当于插件很多内容要重新开发。要等待。
这个转存外部路径出现问题是我操作失误。😄
刚学习 SPL 不久,我也在做各种尝试,难免磕磕碰碰。
学习也是自我完善的过程,下次遇见问题,我尽量事先考虑周全,感谢大佬🙏
😄 哈哈,“一毛钱关系的 JAVA”,是老夫肤浅了,见谅!
谢谢大佬花时间找出问题。老表哥期待官方福音🙏🙏
由于开发的 excel xll 插件使用的 xloper 结构体对应的数据类型为 short, 大于 2^16 不支持,需要升级成 xloper12;等内部测试完后就可发布。
多谢, 内测的时候能不能带上我😄
SPL EXCEL 插件在使用时,没有错误提示,无论是正确结果为空,还是语句有误,都会返回空白。
能否在插件中增加错误提示,但凡语句执行有误,能跳出一个错误提示消息,就像在 IDE 里使用时出现的错误提示一样。
比如, 在 IDE 里执行 =1+a 会有错误提示:
在 EXCEL 插件中执行该语句时,可否弹出类似的消息框?
😄
错误提示显示已经修改,需要更新 scu-excel-xll-2.10.jar
Thanks for your time!