Java Apache poi xlsx的生成速度较慢,有许多缺陷

Java Apache poi xlsx的生成速度较慢,有许多缺陷,java,excel,apache,apache-poi,xlsx,Java,Excel,Apache,Apache Poi,Xlsx,我正在使用ApachePOI3.14生成xlsx。所有操作都正常,但在将每个图像添加到工作簿后,性能都会下降。 减慢速度的方法是绘图类的createPicture(锚定,pictureIndex)。 有没有更好的方法将图像添加到xlsx Drawing drawing = sheet.createDrawingPatriarch(); ClientAnchor anchor = drawing.createAnchor(0, 0, width * Units.EMU_PER_PIXEL, he

我正在使用ApachePOI3.14生成xlsx。所有操作都正常,但在将每个图像添加到工作簿后,性能都会下降。 减慢速度的方法是绘图类的createPicture(锚定,pictureIndex)。 有没有更好的方法将图像添加到xlsx

Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, width * 
Units.EMU_PER_PIXEL, height * Units.EMU_PER_PIXEL, columnIndex, rowNum,columnIndex, rowNum);
anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE);
byte[] byteStream = Files.readAllBytes(Paths.get(imagePath));
int pictureIndex = sheet.getWorkbook().addPicture(byteStream, imageType);
drawing.createPicture(anchor, pictureIndex);

我已经对此进行了深入研究,并找到了唯一的解决办法

我写了一篇关于这个的帖子。 我的答案是正确的

尽管这篇文章是用韩语写的,但请考虑周到

然而,这种方式不适合生产服务器,而是用于故障排除


如果您想使用生产服务器,您可能需要在私有存储库(如sonarqube等)中单独管理已编辑的jar)

我深入研究了这一点,找到了唯一的解决方法

我写了一篇关于这个的帖子。 我的答案是正确的

尽管这篇文章是用韩语写的,但请考虑周到

然而,这种方式不适合生产服务器,而是用于故障排除


如果您想使用生产服务器,您可能需要在专用存储库(例如sonarqube等)中单独管理已编辑的jar

您是否尝试过在开始时只调用一次
CreateDrawingPachur
,然后在整个过程中重新使用它?是,我曾尝试只调用一次CreateDrawingPachura,然后使用GetDrawingPachura,但问题仍然存在,每次调用drawing.createPicture()时,速度都会变慢。请调用create一次,将对它的引用存储在某个位置,然后重新使用它。将所有图形XML处理成友好类的速度很慢!这方面有更新吗?我遇到了完全相同的情况。嗨,我发现问题是ApachePOI版本没有真正流式传输图像。从版本3.17+开始,该问题已得到修复。您是否尝试在开始时只调用一次
createDrawingPachura
,并在整个过程中重新使用它?是的,我只尝试调用了一次createDrawingPachura,然后使用GetDrawingPachura,但问题仍然存在,每次我调用drawing.createPicture()它变慢了。调用create一次,将引用存储到某个地方,然后重新使用它。将所有图形XML处理成友好类的速度很慢!这方面有更新吗?我遇到了完全相同的情况。嗨,我发现问题是ApachePOI版本没有真正流式传输图像。该问题已从3.17版修复+