java poi往docx表格中填充多个图片,使用异步现场去执行,怎么不执行异步里面的代码

时间: 2024-02-03 15:11:28 浏览: 22
要让异步线程执行,可以使用Java中的线程池来实现。具体实现方法如下: 1. 创建一个ExecutorService线程池,用于执行异步任务。 ``` ExecutorService executorService = Executors.newFixedThreadPool(10); ``` 2. 将异步任务提交到线程池中执行。 ``` executorService.submit(new Runnable() { @Override public void run() { // 异步执行的代码 } }); ``` 3. 关闭线程池。 ``` executorService.shutdown(); ``` 如果你的异步代码没有执行,可能是因为没有正确使用线程池。请确认是否已经按照上述步骤创建了线程池,并将异步任务提交到线程池中执行。如果仍然无法解决问题,请提供更多的代码和错误信息,以便更好地帮助你解决问题。
相关问题

java poi往docx表格中填充多个图片,使用异步现场去执行,缩短接口耗时

可以使用Java的多线程技术来实现异步执行,具体步骤如下: 1. 创建一个线程池,通过Executors工厂类创建一个固定大小的线程池。 ```java ExecutorService executorService = Executors.newFixedThreadPool(10); ``` 2. 在需要异步执行的地方,将任务提交到线程池中,这里以填充表格中图片为例。 ```java executorService.submit(() -> { // 读取图片文件 InputStream inputStream = new FileInputStream("image.png"); byte[] pictureData = IOUtils.toByteArray(inputStream); // 在表格中插入图片 XWPFTableCell cell = table.getRow(0).getCell(0); if (cell.getParagraphs().size() == 0) { cell.addParagraph(); } XWPFParagraph paragraph = cell.getParagraphs().get(0); XWPFRun run = paragraph.createRun(); int pictureIndex = docx.addPictureData(pictureData, XWPFDocument.PICTURE_TYPE_PNG); run.addPicture(docx.getAllPictures().get(pictureIndex), XWPFDocument.PICTURE_TYPE_PNG, "image.png", Units.toEMU(100), Units.toEMU(100)); }); ``` 3. 关闭线程池。 ```java executorService.shutdown(); ``` 这样就可以在填充表格中图片的同时,异步执行,缩短接口耗时。需要注意的是,异步执行可能会导致线程安全问题,需要根据具体情况进行处理。

poi往docx表格中填充多个图片,压缩图片保证不耗时

可以使用Apache POI库来实现向docx表格中填充多个图片,并使用Java自带的ImageIO库来进行图片的压缩。 首先,需要使用POI库创建一个空白的docx文档,并在其中添加一个表格。然后,可以使用POI库提供的XWPFRun类的addPicture方法来向单元格中添加图片,同时指定图片的大小和格式。 接下来,可以使用ImageIO库来读取原始图片,并使用Java提供的Image类进行缩放。使用ImageIO库的write方法将缩放后的图片写入到临时文件中,最后再使用POI库的addPicture方法将缩放后的图片插入到单元格中。 以下是代码示例: ``` import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.InputStream; import java.util.List; import javax.imageio.ImageIO; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.util.IOUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; public class InsertImagesToDocxTable { public static void main(String[] args) throws Exception { // 创建docx文档和表格 XWPFDocument doc = new XWPFDocument(); XWPFTable table = doc.createTable(); // 添加表头行 XWPFTableRow headerRow = table.getRow(0); headerRow.createCell().setText("Image"); headerRow.createCell().setText("Description"); // 添加多个图片 for (int i = 1; i <= 3; i++) { XWPFTableRow row = table.createRow(); XWPFTableCell cell = row.getCell(0); // 加载原始图片 String imageName = "image" + i + ".jpg"; InputStream imageStream = InsertImagesToDocxTable.class.getResourceAsStream(imageName); BufferedImage originalImage = ImageIO.read(imageStream); // 缩放图片 int maxWidth = 200; // 最大宽度为200像素 double scale = (double) maxWidth / originalImage.getWidth(); int height = (int) (originalImage.getHeight() * scale); Image scaledImage = originalImage.getScaledInstance(maxWidth, height, Image.SCALE_SMOOTH); // 将缩放后的图片写入临时文件 File tempFile = File.createTempFile("image", ".jpg"); ImageIO.write(toBufferedImage(scaledImage), "jpg", tempFile); // 向单元格中添加图片 XWPFParagraph paragraph = cell.addParagraph(); XWPFRun run = paragraph.createRun(); run.addPicture(tempFile, XWPFDocument.PICTURE_TYPE_JPEG, imageName, maxWidth, height); // 添加描述 row.getCell(1).setText("Description " + i); // 删除临时文件 tempFile.delete(); } // 输出docx文档 doc.write(System.out); doc.close(); } private static BufferedImage toBufferedImage(Image image) { if (image instanceof BufferedImage) { return (BufferedImage) image; } BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); bufferedImage.getGraphics().drawImage(image, 0, 0, null); return bufferedImage; } } ``` 其中,toBufferedImage方法用于将Image对象转换为BufferedImage对象。需要注意的是,这里使用了Java自带的ImageIO库来进行图片的缩放和写入文件,因此不需要使用第三方库进行处理。

相关推荐

最新推荐

recommend-type

java poi导出图片到excel示例代码

主要介绍java poi如何导出图片到excel,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

java poi设置生成的word的图片为上下型环绕以及其位置的实现

主要介绍了java poi设置生成的word的图片为上下型环绕以及其位置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Java Poi 在Excel中输出特殊符号的实现方法

主要介绍了Java Poi 在Excel中输出特殊符号的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

java 中 poi解析Excel文件版本问题解决办法

主要介绍了java 中 poi解析Excel文件版本问题解决办法的相关资料,需要的朋友可以参考下
recommend-type

java使用POI实现html和word相互转换

主要为大家详细介绍了java使用POI实现html和word的相互转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。