Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Easyexcel改造为EEC的问题询问 #419

Open
yaowanli opened this issue Jan 20, 2025 · 6 comments
Open

Easyexcel改造为EEC的问题询问 #419

yaowanli opened this issue Jan 20, 2025 · 6 comments

Comments

@yaowanli
Copy link

yaowanli commented Jan 20, 2025

大佬,你好,我这边在将easyexcel动态导出转换为eec动态导出的时候,发现如下流程问题,下面描述:
使用ListMapSheet导出时,是在Workbook.writeTo才开始的,即是配置完excel格式与自动数据拉取后,逐步拉取数据生成缓存文件,再生成excel,拉取不到数据后即视为结束,压缩文件;
与我现在easyexcel的逻辑:配置完excel格式,不断手工拉取数据,放入缓存文件,手动判断拉取不到数据后,finish()方法后生成文件类似;
但其中有个异常判断问题,eec如果在拉取数据时超时或者查询异常,往外抛出的异常不可控,改动比较大;有没有什么方法,能像原来easyexcel一样,不断往缓存文件里放入数据呢?(类似ListSheet中的append方法,但这个是protected方法,不可以使用或修改)这样就能让easyexcel平移eec的改动变小了;

@yaowanli
Copy link
Author

其实就是函数式编程的修改问题,不知道我的理解对不对。

@yaowanli
Copy link
Author

yaowanli commented Jan 20, 2025

我看了历史的issue,受到追加数据的提问启发,是否也可以通过重写XMLWorksheetWriter的writeTo方法,实现不断添加数据的逻辑呢?

@wangguanquan
Copy link
Owner

我看了历史的issue,受到追加数据的提问启发,是否也可以通过重写XMLWorksheetWriter的writeTo方法,实现不断添加数据的逻辑呢?

EEC是pull模式,easyexcel是push模式,两种工具设计并不一样,Workbook.writeTo方法是命令中止符,调用writeTo方法才会实际执行写操作,重写XMLWorksheetWriter的writeTo方法感觉也很难改为push模式,你可能还需要重写XMLWorkbookWriter提前调用writeWorksheets方法来写数据

@yaowanli
Copy link
Author

oh,感谢,本质上确实是pull模式和push模式的区别。我尝试重写这两个方法试试。

@yaowanli
Copy link
Author

尝试了下讲writeTo拆为三个前中后函数,发现还得把对应的sheet下的resetBlockData等都进行重写,确实比较麻烦

@wangguanquan
Copy link
Owner

可以fork本项目,然后直接改源码,使用扩展要改的地方太多,并且会出来部分属性无法访问的情况,直接改源码会好一些,大体调整一下输出顺序应该可以了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants