现在使用Java处理Excel文件大部分都用的Poi,但是很多需求Poi是做不到的,比如排序,跨Book复制Sheet,设置过滤条件等,为了实现这些功能最后找到了Jacob。
使用起来就像用java写vba一样,vba里可以使用命名参数,如
ThisWorkbook.WorkSheets.Add after:=ThisWorkbook.ActiveSheet
指定给after传参,就可以直接把新增的sheet放置到活动sheet的后面,一开始为了实现这个功能要先新增一个sheet再通过move方法,把新增的sheet移动到指定位置,很不方便,找遍了外网都没找到关于可选参数的使用方法,最终翻阅Api找到了办法。
Dispatch workSheets = Dispatch.call(workBook, "WorkSheets").toDispatch();
Dispatch activeSheet = Dispatch.call(workBook, "ActiveSheet").toDispatch();
Dispatch.call(workSheets, "Add", Variant.VT_MISSING, activeSheet);
重点就是 Variant.VT_MISSING
,使用这个可以起到类似占位的作用,第一个可选参数不要,把值传给第二个参数。
最后附上API地址:Jacob