美文网首页
Apache POI XWPF 爬坑指南之三表格中插入图片

Apache POI XWPF 爬坑指南之三表格中插入图片

作者: Pantheon | 来源:发表于2017-08-29 19:11 被阅读351次

接上话

表格中插入图片


思路:新建表格中每个单元格会有一个默认的空的段落,获取这个段落,然后获取这个段落的XWPFRun,使用XWPFRun插入图片。

    /**
     * 往表格中的一个单元格中插入图片
     *
     * @param xwpfTableCell
     * @param imagePojo
     * @throws IOException
     * @throws InvalidFormatException
     */
    public static void insertPictureIntoTableCell(XWPFTableCell xwpfTableCell, ImagePojo imagePojo,int width,int height) throws IOException, InvalidFormatException {
        XWPFParagraph newPara = xwpfTableCell.getParagraphArray(0);
        XWPFRun run = newPara.createRun();
        run.addPicture(new FileInputStream(imagePojo.getImageUrl()), imagePojo.getFormat(), imagePojo.getImageName(), Units.toEMU(width), Units.toEMU(height));
    }

public class ImagePojo {
    private String imageName;
    private String imageUrl;
    private int format;//图片格式

    public int getFormat() {
        return format;
    }

    public void setFormat(int format) {
        this.format = format;
    }

    public String getImageName() {
        return imageName;
    }

    public void setImageName(String imageName) {
        this.imageName = imageName;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
}

插入图片时需要设置图片格式,获取图片格式的方法为

     /**
     * 获取图片格式
     *
     * @param imgFile
     * @return
     */
    public static int getPictureFormat(String imgFile) {
        int format;
        if (imgFile.endsWith(".emf")) format = XWPFDocument.PICTURE_TYPE_EMF;
        else if (imgFile.endsWith(".wmf")) format = XWPFDocument.PICTURE_TYPE_WMF;
        else if (imgFile.endsWith(".pict")) format = XWPFDocument.PICTURE_TYPE_PICT;
        else if (imgFile.endsWith(".jpeg") || imgFile.endsWith(".jpg")) format = XWPFDocument.PICTURE_TYPE_JPEG;
        else if (imgFile.endsWith(".png")) format = XWPFDocument.PICTURE_TYPE_PNG;
        else if (imgFile.endsWith(".dib")) format = XWPFDocument.PICTURE_TYPE_DIB;
        else if (imgFile.endsWith(".gif")) format = XWPFDocument.PICTURE_TYPE_GIF;
        else if (imgFile.endsWith(".tiff")) format = XWPFDocument.PICTURE_TYPE_TIFF;
        else if (imgFile.endsWith(".eps")) format = XWPFDocument.PICTURE_TYPE_EPS;
        else if (imgFile.endsWith(".bmp")) format = XWPFDocument.PICTURE_TYPE_BMP;
        else if (imgFile.endsWith(".wpg")) format = XWPFDocument.PICTURE_TYPE_WPG;
        else {
            System.err.println("Unsupported picture: " + imgFile +
                    ". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");
            System.err.println("不支持的图片格式: " + imgFile +
                    ". 仅支持 emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg 格式的图片");
            format = -1;
        }
        return format;
    }

相关文章

网友评论

      本文标题:Apache POI XWPF 爬坑指南之三表格中插入图片

      本文链接:https://www.haomeiwen.com/subject/byradxtx.html