poi向word指定位置插如文字或图片(从百度上摘取然后自己整理的)

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureRenderData;
import org.springframework.core.io.ClassPathResource;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class url123 {
    public static void  asd() throws IOException {
        try {
            Map<String, Object> data = new HashMap<String, Object>();
            File file = new File("");
            String filePath1 = file.getCanonicalPath();//获取项目路径
            // 文本
            data.put("name", "张三");
            //图片
            data.put("photo", new PictureRenderData(127, 185, "D:/.jpg"));
            // 写入word输出
            System.out.println(filePath1+"\\wordTest.docx");
            ClassPathResource template = new ClassPathResource("D:/word.docx");     //获取模板
            String filePath = template.getPath();   //读取图片路径
            XWPFTemplate xwpfTemplate = XWPFTemplate.compile(filePath).render(data);  //填充word
            String docName = filePath1+System.currentTimeMillis() + ".docx";   //生成word路径
            File targetFile = new File(docName);                          //新建File文件对象
            FileOutputStream out = new FileOutputStream(targetFile);     //FileOutputStream文件字节输出流
            xwpfTemplate.write(out);
            out.flush();          //刷新
            out.close();         //关流
            xwpfTemplate.close();
        } catch (
                IOException e) {
            e.printStackTrace();
        }
    }

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
POI(Poor Obfuscation Implementation)是一个Apache基金会下的开源项目,用于操作Microsoft Office文件格式(包括.doc、.docx、.xls、.xlsx等)。在使用POI操作Word文件时,可以通过XWPFDocument类和XWPFParagraph类来获取Word文档中的文本内容。但是,如果要获取Word文档中插入的图片中的文本内容,需要利用POI提供的XWPFDocument类中的getAllPictures()方法来获取Word文档中所有图片,然后再通过图片位置信息(比如paragraph和run的位置)来获取图片中插入的文本内容。具体的代码实现可以参考下面的示例代码: ```java import org.apache.poi.xwpf.usermodel.*; import java.io.FileInputStream; import java.io.IOException; import java.util.List; public class ReadWord { public static void main(String[] args) throws IOException { // 读取Word文档 XWPFDocument doc = new XWPFDocument(new FileInputStream("test.docx")); // 获取Word文档中所有的图片 List<XWPFPicture> pictures = doc.getAllPictures(); // 遍历所有图片 for (XWPFPicture picture : pictures) { // 获取图片所在的段落 XWPFParagraph paragraph = picture.getParagraph(); // 获取图片所在的文本段 XWPFRun run = picture.getCTPicture().getPictArray(0).newCursor().getObject().getSpArray(0).getTxBody().getPArray(0).getRArray(0); // 获取图片中插入的文本内容 String text = run.getText(0); System.out.println(text); } } } ``` 需要注意的是,上述代码只适用于获取Word文档中插入的图片中的文本内容,如果图片是作为文本的背景或者其他特殊情况,则无法获取到图片中的文本内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值