用 spire.doc 进行 Word 常用操作的例子

9 篇文章 0 订阅
  • 导入jar

        下载连接:Free Spire.Doc for JAVA | 下载

        推荐用免费版,使用商业版有水印,删除之后再用这个jar操作会报索引越界的问题。

  • 定义好的 doc 模板,把内容注入进去(不会定义word书签的百度一下,我这里就不写了)
    public static String writeParams(HttpServletRequest request, Map<String,String> params){
        //获得定义好的模板的路径
        request.getSession().getServletContext().getRealPath("template/template1.doc");
        //new 一个文档并加载它
        Document document = new Document(templatePath);
        //获得文件定义的书签
        BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(document);
        params.forEach((key, value) -> {
            //移动到书签的位置
            bookmarksNavigator.moveToBookmark(key);
            if (value == null){
                value = "";
            }
            //替换书签的内容,参数:String、Boolean(true不更换书签的样式)
            bookmarksNavigator.replaceBookmarkContent(value.replaceAll("<br/>",""),true);
        });
        //保存文档,格式为doc
        String path = request.getSession().getServletContext().getRealPath("upload/");
        path += params.get("id")+".doc";
        document.saveToFile(path,FileFormat.Doc);
        return path;
    }
  • 用代码来设置 Word 格式

获取文档的

    public static void format(String path){
        //创建并加载文档
        Document document = new Document(path,FileFormat.Doc);
        //循环节段
        SectionCollection sections = document.getSections();
        for (int i = 0; i < sections.getCount(); i++) {
            // 循环段落
            ParagraphCollection paragraphs = sections.get(i).getParagraphs();
            for (int i1 = 0; i1 < paragraphs.getCount(); i1++) {
            }
        }   
    }

使用 TextRange 的两种方式,基本上所有的调格式的都可以用 TextRange 来完成

//创建亲的段落并设置字体样式
Paragraph paragraph = document.createParagraph();
TextRange textRange = paragraph.appendText(joiner.toString());//添加文本
paragraph.getFormat().setFirstLineIndent(30f);//缩进
textRange.getCharacterFormat().setFontName("仿宋_GB2312");//字体
textRange.getCharacterFormat().setFontSize(16);//字体大小
//找出需要加颜色的文字,参数(String,Boolean:是否区分大小写,Boolean:启用全字匹配)
TextSelection textSelection = paragraph.find(strings[i2], false, true);
TextRange asOneRange = textSelection.getAsOneRange();
asOneRange.getCharacterFormat().setTextColor(Color.red);
//添加段落到后面
paragraphs.insert(i1+i2-1,paragraph);
  • 删除第一行的警告:Evaluation Warning: The document was created with Spire.Doc for JAVA.

使用 Spire.doc 的一个问题在于保存过的文件都有一个红色的警告,我是直接删除第一行,但是这个是商业版的问题,用免费版就没有这个问题了。

下载地址:Free Spire.Doc for JAVA | 下载

    /**
     * 删除Word.docx第一行
     * @param path
     */
    public static void deleteDocxFirstText(String path){
        try {
            InputStream inputStream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(inputStream);
            inputStream.close();
            XWPFParagraph toDelete = document.getParagraphs().stream()
                    .filter(p -> StringUtils.equalsIgnoreCase(DELTEXT, p.getParagraphText()))
                    .findFirst().orElse(null);
            if (toDelete != null) {
                document.removeBodyElement(document.getPosOfParagraph(toDelete));
                OutputStream fos = new FileOutputStream(path);
                document.write(fos);
                fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 删除Word.doc第一行
     * @param path
     */
    public static void deleteDocFirstText(String path){
        try {
            InputStream inputStream = new FileInputStream(path);
            HWPFDocument document = new HWPFDocument(inputStream);
            inputStream.close();
            int numParagraphs = document.getRange().numParagraphs();
            if (numParagraphs > 0){
                document.getRange().getParagraph(0).delete();
                File file = new File(path);
                if (file.exists()) {
                    file.delete();
                }
            }
            BufferedOutputStream  outputStream = new BufferedOutputStream(new FileOutputStream(path));
            document.write(outputStream);

            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

需要注意的是,在删除第一行后,如果下次进行操作的话,要用wps保存下,不然就会报 index list 越界错误,解决方法就是在没有操作完成先不要删除第一行,在最后才删除第一行,或者用免费版。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Free Spire.Doc 是一款免费的专门对 Word 文档进行操作的 .NET类库。适用于商业或个人用途。这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。作为一款独立的 Word .NET 控件,能执行多种 Microsoft Word 文档处理任务的 .NET API。支持 Word97-2003,Word2007,Word2010 以及 Word2013。能在 Word 97/2003/2007/2010/2013 和 XML、RTF、TXT、XPS、EPUB、EMF、HTML 等格式文件之间进行双向转换,还能将 Word 文件高质量地转换为 PDF 文件格式。 主要功能如下: 1. 高质量的文档转换。Free Spire.Doc for .NET 能帮助用户将 Word 文件保存在流中,也可以保存为 Web response,还支持将 Word 文件与 XML、RTF、EMF、 TXT、XPS、EPUB、HTML 等格式文件之间的双向转换。同时,它还支持将 Word 文件转换为 PDF 文件,HTML 文件转换为图像文件。 2. 多样化的 Word 文档功能。支持动态创建一个全新的 Word 文档,并支持几乎所有的 Word 文档元素,它们主要包括页面、节、页眉、页脚、脚注、尾注、段落、项目符号和编号、表格、 文本、域、超链接、书签、注释、图片、样式、背景设置、打印功能、文档设置和文档保护。同时,也支持形状、文本框、图片、OLE 对象和内容控件。 3. 对已有的 Word 文档进行操作处理。支持搜索和替换、设置对齐方式、分页、分节、填充域、文档合并、复制、打印以及邮件合并等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值