Spire.doc实现对word的操作(包括文字,表格,图片)

这篇具有很好参考价值的文章主要介绍了Spire.doc实现对word的操作(包括文字,表格,图片)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Spire.doc包的导入

Spire.doc比较小众,因此需要在pom.xml中导入spire.doc的仓库,导入之后直接导包

<!--导入Spire-->
    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>

导入仓库后进行导包

<!--spire.doc 操作word文档-->
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>3.9.0</version>
        </dependency>

2.spire.doc的使用

2.1文字替换

2.1.1模板

首先需要准备一个word模板,可以在里面进行文字替换,因为文字特别多,所以此处采用了对具有特殊符号的文字进行替换。此处采用 ${xxx}
模板如图所示:
Spire.doc实现对word的操作(包括文字,表格,图片)

2.1.2替换核心代码

下面代码是替换的核心代码,写了一个单独的方法

public void replaceSpecialWord(Document doc, Map<String, String> map) {
        // 正则表达式,匹配所有的占位符 ${}
        Pattern pattern = Pattern.compile("\\$\\{.*?}");
        // 根据正则表达式获取所有文本
        TextSelection[] allPattern = doc.findAllPattern(pattern);
        // 逐个替换占位符
        for (TextSelection textSelection : allPattern) {
            String tmp = map.get(textSelection.getSelectedText());
            System.out.print(textSelection.getSelectedText());
            int res = doc.replace(textSelection.getSelectedText(), tmp, true, true);
            System.out.println(":" + res);
        }
        log.info("替换完成?");
    }

2.1.3文字替换测试代码

下面是测试代码,读取文件,进行替换

Document doc = new Document();
doc.loadFromFile("E:\\java\\demo\\work\\src\\main\\resources\\static\\spireTest.docx", FileFormat.Docx);
Map<String, String> map = new HashMap<>();
//普通替换
map.put("${name}", "张山");
replaceSpecialWord(doc, map);//字符替换

2.1.4下载代码

替换后浏览器下载,其中response是HttpServletRequest进行文件传输

String fileName="spireTest_"+new Date().getTime()+".docx";
        try {
        response.setHeader("content-disposition","attachment;filename="+new String(fileName.getBytes(),"ISO8859-1"));
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

            doc.saveToStream(response.getOutputStream(), FileFormat.Docx);
        } catch (Exception e) {
            e.printStackTrace();
        }

替换的结果如图所示

2.2图片替换

2.2.1图片模板

Spire.doc实现对word的操作(包括文字,表格,图片)

2.2.2 图片替换核心代码

图片替换更加简单,其中image与模板中的image相同

		//图片保存测试
        TextSelection[] textSelection = doc.findAllString("image",true,false);
        int index ;

        //加载图片替换文本字符串
        for (Object obj : textSelection) {
            TextSelection Selection = (TextSelection)obj;
            DocPicture pic = new DocPicture(doc);
            pic.loadImage("E:\\java\\demo\\work\\src\\main\\resources\\static\\aaa.jpg");
            TextRange range = Selection.getAsOneRange();
            index = range.getOwnerParagraph().getChildObjects().indexOf(range);
            range.getOwnerParagraph().getChildObjects().insert(index,pic);
            range.getOwnerParagraph().getChildObjects().remove(range);
        }

3.打印表格

2.3.1 书签设置

打印表格需设置书签
Spire.doc实现对word的操作(包括文字,表格,图片)
将table放入word的标签,否者会将表格自动生成在word文档最后
Spire.doc实现对word的操作(包括文字,表格,图片)文章来源地址https://www.toymoban.com/news/detail-410922.html

2.3.2 核心代码

//表格替换
        List<P1Domain> p1DomainList=new ArrayList<>();
        P1Domain p1Domain=new P1Domain();
        for(int i=0;i<10;i++){
            p1Domain.setH(1.0);
            p1Domain.setId(Integer.toUnsignedLong(i));
            p1Domain.setPci(2.0);
            p1Domain.setPd(3.0);
            p1DomainList.add(p1Domain);
        }

        String[] header={"h","id","pci","pd"};
        Section sec = doc.addSection();
        Table table=sec.addTable(true);
        table.resetCells(p1DomainList.size() + 1, header.length);
        TableRow row = table.getRows().get(0);
        row.isHeader(true);
        row.setHeight(20);
        row.setHeightType(TableRowHeightType.Exactly);
        row.getRowFormat().setBackColor(Color.white);

        //绘制表头
        for (int i = 0; i < header.length; i++) {
            row.getCells().get(i).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
            Paragraph p = row.getCells().get(i).addParagraph();
            p.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
            TextRange range1 = p.appendText(header[i]);
            range1.getCharacterFormat().setFontName("Arial");
            range1.getCharacterFormat().setFontSize(12f);
            range1.getCharacterFormat().setBold(true);
            range1.getCharacterFormat().setTextColor(Color.BLACK);
        }
        //写入剩余组内容到表格,并格式化数据
        for (int r = 0; r < p1DomainList.size(); r++) {
            TableRow dataRow = table.getRows().get(r + 1);
            dataRow.setHeight(25);
            dataRow.setHeightType(TableRowHeightType.Exactly);
            dataRow.getRowFormat().setBackColor(Color.white);

            for (int c = 0; c < header.length; c++) {
                dataRow.getCells().get(c).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                TextRange range2 = dataRow.getCells().get(c).addParagraph().appendText(Double.toString(p1DomainList.get(r).getH()));
                range2.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
                range2.getCharacterFormat().setFontName("Arial");
                range2.getCharacterFormat().setFontSize(10f);
            }
        }
        log.info("表格打印成功!!!");

3.实现的比较简单,其他的下次再改

到了这里,关于Spire.doc实现对word的操作(包括文字,表格,图片)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Word控件Spire.Doc 【脚注】教程(5):单词脚注的位置与数字格式

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处

    2023年04月24日
    浏览(36)
  • Word控件Spire.Doc 【超链接】教程(3):在C#中查找word文档中的超链接

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处

    2024年02月04日
    浏览(35)
  • Word控件Spire.Doc 【图像形状】教程(1) ;如何在 Word 中插入图像(C#/VB.NET)

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处

    2024年02月07日
    浏览(25)
  • java 将word转为pdf文件的两种方式【spire.doc.free】【documents4j】

    如资产证明等场景下,一般要求同时生成word与pdf两种格式的证明文件,且两者格式需保持一致,可以各自单独生成,但那样可能需要维护两个模板文件,所以也可以仅定义一份word的模板文件,使用模板生成word文件,再将word转换为pdf,这样不仅少维护一个模板,也可以保证

    2024年02月12日
    浏览(47)
  • Python操作Word水印:添加文字或图片水印

    在Word文档中,可以添加半透明的图形或文字作为水印,以保护文档的原创性,防止未经授权的复制或使用。除了提供安全功能外,水印还可以展示文档创作者的信息、附加的文档信息,或者仅用于文档的装饰。本文将介绍如何使用 Spire.Doc for Python 在程序中的轻松 添加文字和

    2024年02月08日
    浏览(34)
  • vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt)

        最近在做vue2.0+element UI的项目中遇到了一个需求:需求是多个文件上传的同时实现文件的在线预览功能。需求图如下:     看到这个需求的时候,小栗脑袋一炸。并不知道该如何下手,之前的实践项目中也并没有遇到相似的功能。因此也废了一番功夫想要实现这样一个

    2024年01月23日
    浏览(45)
  • 【vue2】纯前端实现本地的pdf/word/epub文件预览(包括pdf选中文字,epub高亮等)

    需求是预览本地的pdf/word/epub格式的文件,但是搜索后发现没有可以直接使用的,格式不同,显示的方式和效果也都略有不同。 最后还是 分别实现预览 的功能。 如果只需要预览pdf/word等格式的话,可以使用的方案:vue-office,支持多种文件(docx、excel、pdf)预览的vue组件库,支持

    2024年02月11日
    浏览(41)
  • SpringBoot操作Word实现文字替换和盖章(提供Gitee源码)

    前言:在日常的工作当中,避免不了会涉及到一些Word文件方面的操作,这篇博客将使用SpringBoot整合开源Apache来操作Word,分享的都是目前实际当中会经常用到的一些功能代码都实际测试过,只分享干货,大家一键复制使用就可以了。 目录 一、引入pom依赖 二、工具类 2.1、PO

    2024年02月09日
    浏览(29)
  • ChatGPT | 分割Word文字及表格,优化文本分析

    知识库读取Word内容时,由于embedding切片操作,可能会出现表格被分割成多个切片的情况。这种切片方式可能导致“列名栏”和“内容栏”之间的Y轴关系链断裂,从而无法准确地确定每一列的数据对应关系,从而使得无法准确知道每一列的数据汇总。 用下面表格为例子: 级数

    2024年02月15日
    浏览(31)
  • Java处理doc类型的Word文档转换成html(按顺序保留格式+图片)

    最新有个新需求,就是doc文档转换html内容倒不是很难,给大家分享一下,总体思路就是按doc转html的思路来走,唯一缺点是不会自动转换图片,图片是要手动转成base64,默认是有html、body、head、meta等等标签,我这里都用正则处理掉了。 需要注意的是: .docx 格式的 Word 文档是

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包