精华内容
下载资源
问答
  • java修改Word文档内容

    千次阅读 2019-01-30 12:15:47
    需要的jar包: poi-3.8-20120326.jar poi-scratchpad-3.8-20120326....创建word文档模板: 修改内容代码: public static void CreatWordByModel(String tmpFile, Map<String, String> contentMa...

    需要的jar包:

            poi-3.8-20120326.jar

            poi-scratchpad-3.8-20120326.jar

    创建word文档模板:

     

    修改内容代码:

       public static void CreatWordByModel(String  tmpFile, Map<String, String> contentMap, String exportFile) throws Exception{
      
            InputStream in = null;   
            in = new FileInputStream(new File(tmpFile));  
            
            HWPFDocument document = null;
            document = new HWPFDocument(in);
            // 读取文本内容
            Range bodyRange = document.getRange();
            System.out.println(bodyRange.toString());
            System.out.println(bodyRange.text());
            // 替换内容
            for (Map.Entry<String, String> entry : contentMap.entrySet()) {
                bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());
            }
    
            //导出到文件
            try {
            	ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                document.write((OutputStream)byteArrayOutputStream);
                OutputStream outputStream = new FileOutputStream(exportFile);
                outputStream.write(byteArrayOutputStream.toByteArray());
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

     

    测试代码:

        public static void main(String[] args) throws Exception {
            Map map=new HashMap();
            map.put("name","刁某某");
            map.put("age","24");
            map.put("sex","男");
            CreatWordByModel("G:/docModel.doc",map,"G:/downWord.doc");
        }

     

    测试结果:

     

    展开全文
  • PHP读取word文档 导入word文档

    千次阅读 2019-10-26 15:50:48
    PHP读取word文档 导入word文档PHP读取word文档 导入word文档openoffice把word转html用phpquery读取html的内容 PHP读取word文档 导入word文档 用openoffice和phpquery实现word文档的导入 读取word文档数据 前一段时间...

    PHP读取word文档 导入word文档

    前一段时间在工作中遇见了一个棘手的需求,客户要求把word里的数据导入,对数据进行统计。
    刚开始觉得挺简单用phpword应该能够实现,后在网上各处询问也没发现phpword能够导入word,
    然后我就转换了思路,先用libreoffice把word转换成html

    libreoffice把word转html

    安装libreoffice就不多做介绍
    openoffice命令
    用这个命令就可以把word文档转为html

    用phpquery读取html的内容

    获取到html了下面就是读取里边的内容了 大家应该都用过jquery,jQuery可以在html中获取html里的内容
    可以在php后端我们改如何操作呢,用phpQuery就可以让php处理html代码像jQuery一样方便。
    项目地址:https://code.google.com/p/phpquery/

    github地址:https://github.com/TobiaszCudnik/phpquery

    DEMO

    下载库文件:https://code.google.com/p/phpquery/downloads/list

    我下的是onefile版:phpQuery-0.9.5.386-onefile.zip

    官方demo:https://code.google.com/p/phpquery/source/browse/branches/dev/demo.php

    然后在项目中引用。
    phpquery
    phpquery的文档特别少,但是和jquery的差别并不大
    pq($param, $context = null);

    pq(); 相当于 jQuery的$();。它主要完成三件事情:

    1. 载入标记资源:

    // 输入到载入的文档:
    // 对于最开始输入的字符串不接收文本类型的节点:pq(’

    ’)
    // 从$pq->getDocumentID()根据ID载入到文档: pq(’
    ’, $pq->getDocumentID())
    // 根据DOM节点的归属将同样的文档载入:pq(’
    ’, DOMNode)
    // 从phpQuery 对象载入文档: pq(’
    ’, $pq)

    1. 运行查询

    // 根据最后一个选择的文档执行查询:pq(‘div.myClass’)
    // 根据$pq->getDocumentID()的ID从文档中进行查询:pq(‘div.myClass’, $pq->getDocumentID())
    // 在同样的文档上根据DOM节点的归属进行查询并且使用节点作为查询的根节点:pq(‘div.myClass’, DOMNode)
    // 在文档上使用phpQuery对象进行查询
    // 同时使用对象的栈作为根节点进行查询: pq(‘div.myClass’, $pq)

    1. 使用phpQuery对象对DOM节点进行原型化操作

    foreach(pq(‘li’) as $li) // $ li是纯DOM节点, 将它变为phpQuery对象: pq($li);。

    原创文章,码字不易,转载请注明出处

    展开全文
  • 快速批量修改word文档内容

    千次阅读 2020-11-01 17:32:37
    这里写自定义目录标题快速批量修改word文档内容用到的库具体修改的需求1.批量替换标题中“[ ]”里的内容2.批量替换word表格里的内容(两个表格里的替换的内容相同)3.保存时文件名的替换(文件名与文档标题相同)...

    快速批量修改word文档内容

    在工作中可能经常遇到需要对word中同一位置的内容进行批量修改或者替换,如果数据量小,手动改一改就可以了,但是遇到大量的修改,再用手动修改的方法的话,工作量就变得很大了,重复的复制粘贴也极容易出错,所以接下来给大家介绍一个用Python实现批量修改word文档内容的方法。给定一个word,然后批量替换并保存。

    用到的库

    doc

    具体修改的需求

    1.批量替换标题中“[ ]”里的内容

    2.批量替换word表格里的内容(两个表格里的替换的内容相同)

    3.保存时文件名的替换(文件名与文档标题相同)

    其他处理

    将需要替换的文件名和表格内容分别放在两个txt文档

    代码实现

    1.导包

    from docx import Document
    

    包就不做介绍了。

    2.读取两个txt文档

    with open("D:\\测试报告\\filename.txt",encoding='utf8') as fp:
        filename=fp.read().split("\n")
        fp.close()
    with open("D:\\测试报告\\chengxu.txt",encoding='utf8') as fp:
        chengxu=fp.read().split("\n")
        fp.close()
    

    因为txt文档里的内容是一行一个数据,所以我们用split方法制定分隔符为换行符进行切片,文件打开后记得关闭,不关闭就会导致文件一直被占用,无法进行其他操作。

    3.使用Document()方法读取模板word文档

    doc=Document("D:\\测试报告\\XXXX分析系统[XXXXXX接口需求0720]新业务测试报告.docx")
    

    4.修改文档标题

    for i in range(len(filename)):
        paragraphs=doc.paragraphs #获取文档对象
        paragraphs[1].text="[{}]开发测试报告".format(filename[i])
        runs=paragraphs[1].runs  #字体信息都包含在runs对象里
        title=runs[0] #runs是一个列表对象
        title.font.name='宋体'
        title.font.bold=True #字体加粗
        title.font.size=203200
    

    循环遍历读取txt里的标题,获取word文档的段落对象,因为需要修改的标题在第二行
    ,所以用paragraphs[1].text来表示第二行的内容。这里用了format方法来进行格式化。因为要保证修改后的内容的格式与原来的一样,所以在这之前先获得了标题的字体信息,现在直接对修改后的标题自字体的类型和大小进行赋值即可。

    5.修改表格里的内容

    tables=doc.tables #获取表格对象
    tables[1].cell(1,0).text="1、	{}".format(chengxu[i]) #赋值需要替换的表格内容
    tables[2].cell(8,2).text="{}".format(chengxu[i]) #赋值需要替换的表格内容
    tables[1]._cells[5].paragraphs[0].runs[0].font.name='宋体'
    tables[1]._cells[5].paragraphs[0].runs[0].font.size=114300
    

    tables[1]表示word里的第二个表格,cell(1,0)表示表格的第2行第1列,其他同理。_cells[5]表示第五个单元格。

    6.文档的保存

    doc.save("D:\\测试报告\\XXXX分析系统[{}]新业务测试报告.docx".format(filename[i]))
    

    7.最后效果

    在处理成百上千的文档时就很方便了。

    完整代码

    
    from docx import Document
    
    with open("D:\\测试报告\\filename.txt",encoding='utf8') as fp:
        filename=fp.read().split("\n")
        fp.close()
    with open("D:\\测试报告\\chengxu.txt",encoding='utf8') as fp:
        chengxu=fp.read().split("\n")
        fp.close()
        
    doc=Document("D:\\测试报告\\XXXX分析系统XXXXXX接口需求0720]新业务测试报告.docx")
    for i in range(len(filename)):
        paragraphs=doc.paragraphs
        paragraphs[1].text="[{}]开发测试报告".format(filename[i])
        runs=paragraphs[1].runs
        title=runs[0]
        title.font.name='宋体'
        title.font.bold=True
        title.font.size=203200
        tables=doc.tables
        tables[1].cell(1,0).text="1、	{}".format(chengxu[i])
        tables[2].cell(8,2).text="{}".format(chengxu[i])
        tables[1]._cells[5].paragraphs[0].runs[0].font.name='宋体'
        tables[1]._cells[5].paragraphs[0].runs[0].font.size=114300
        doc.save("D:\\测试报告\\结果\\XXXX分析系统[{}]新业务测试报告.docx".format(filename[i]))
    
    展开全文
  • 使用POI读取word文档内容

    万次阅读 2017-05-14 22:59:33
    word doc文件2中方式 1.1 通过WordExtractor读文件(在WordExtractor内部进行信息读取时还是通过HWPFDocument来获取的。) 1.2 通过HWPFDocument读文件 Apache poi的hwpf模块是专门用来对word doc文件进行...

    word doc文件2中方式

    1.1     通过WordExtractor读文件(WordExtractor内部进行信息读取时还是通过HWPFDocument来获取的。)

    1.2     通过HWPFDocument读文件

    Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念:

    l  Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落(Paragraph),还可以是拥有共同属性的一段文本(CharacterRun)。

    l  Section:word文档的一个小节,一个word文档可以由多个小节构成。

    l  Paragraph:word文档的一个段落,一个小节可以由多个段落构成。

    l  CharacterRun:具有相同属性的一段文本,一个段落可以由多个CharacterRun组成。

    l  Table:一个表格。

    l  TableRow:表格对应的行。

    l  TableCell:表格对应的单元格。

           Section、Paragraph、CharacterRun和Table都继承自Range。

    1.1     通过WordExtractor读文件

           在使用WordExtractor读文件时我们只能读到文件的文本内容和基于文档的一些属性,至于文档内容的属性等是无法读到的。如果要读到文档内容的属性则需要使用HWPFDocument来读取了。下面是使用WordExtractor读取文件的一个示例:

    public class HwpfTest {  
       
       @SuppressWarnings("deprecation")  
       @Test  
       public void testReadByExtractor() throws Exception {  
          InputStream is = new FileInputStream("D:\\test.doc");  
          WordExtractor extractor = new WordExtractor(is);  
          //输出word文档所有的文本  
          System.out.println(extractor.getText());  
          System.out.println(extractor.getTextFromPieces());  
          //输出页眉的内容  
          System.out.println("页眉:" + extractor.getHeaderText());  
          //输出页脚的内容  
          System.out.println("页脚:" + extractor.getFooterText());  
          //输出当前word文档的元数据信息,包括作者、文档的修改时间等。  
          System.out.println(extractor.getMetadataTextExtractor().getText());  
          //获取各个段落的文本  
          String paraTexts[] = extractor.getParagraphText();  
          for (int i=0; i<paraTexts.length; i++) {  
             System.out.println("Paragraph " + (i+1) + " : " + paraTexts[i]);  
          }  
          //输出当前word的一些信息  
          printInfo(extractor.getSummaryInformation());  
          //输出当前word的一些信息  
          this.printInfo(extractor.getDocSummaryInformation());  
          this.closeStream(is);  
       }  
        
       /** 
        * 输出SummaryInfomation 
        * @param info 
        */  
       private void printInfo(SummaryInformation info) {  
          //作者  
          System.out.println(info.getAuthor());  
          //字符统计  
          System.out.println(info.getCharCount());  
          //页数  
          System.out.println(info.getPageCount());  
          //标题  
          System.out.println(info.getTitle());  
          //主题  
          System.out.println(info.getSubject());  
       }  
        
       /** 
        * 输出DocumentSummaryInfomation 
        * @param info 
        */  
       private void printInfo(DocumentSummaryInformation info) {  
          //分类  
          System.out.println(info.getCategory());  
          //公司  
          System.out.println(info.getCompany());  
       }  
        
       /** 
        * 关闭输入流 
        * @param is 
        */  
       private void closeStream(InputStream is) {  
          if (is != null) {  
             try {  
                is.close();  
             } catch (IOException e) {  
                e.printStackTrace();  
             }  
          }  
       }  
        
    } 


    1.2     通过HWPFDocument读文件

    HWPFDocument是当前Word文档的代表,它的功能比WordExtractor要强。通过它我们可以读取文档中的表格、列表等,还可以对文档的内容进行新增、修改和删除操作。只是在进行完这些新增、修改和删除后相关信息是保存在HWPFDocument中的,也就是说我们改变的是HWPFDocument,而不是磁盘上的文件。如果要使这些修改生效的话,我们可以调用HWPFDocumentwrite方法把修改后的HWPFDocument输出到指定的输出流中。这可以是原文件的输出流,也可以是新文件的输出流(相当于另存为)或其它输出流。下面是一个通过HWPFDocument读文件的示例:

    public class HwpfTest {  
        
       @Test  
       public void testReadByDoc() throws Exception {  
          InputStream is = new FileInputStream("D:\\test.doc");  
          HWPFDocument doc = new HWPFDocument(is);  
          //输出书签信息  
          this.printInfo(doc.getBookmarks());  
          //输出文本  
          System.out.println(doc.getDocumentText());  
          Range range = doc.getRange();  
          //this.insertInfo(range);  
          this.printInfo(range);  
          //读表格  
          this.readTable(range);  
          //读列表  
          this.readList(range);  
          //删除range  
          Range r = new Range(2, 5, doc);  
          r.delete();//在内存中进行删除,如果需要保存到文件中需要再把它写回文件  
          //把当前HWPFDocument写到输出流中  
          doc.write(new FileOutputStream("D:\\test.doc"));  
          this.closeStream(is);  
       }  
        
       /** 
        * 关闭输入流 
        * @param is 
        */  
       private void closeStream(InputStream is) {  
          if (is != null) {  
             try {  
                is.close();  
             } catch (IOException e) {  
                e.printStackTrace();  
             }  
          }  
       }  
        
       /** 
        * 输出书签信息 
        * @param bookmarks 
        */  
       private void printInfo(Bookmarks bookmarks) {  
          int count = bookmarks.getBookmarksCount();  
          System.out.println("书签数量:" + count);  
          Bookmark bookmark;  
          for (int i=0; i<count; i++) {  
             bookmark = bookmarks.getBookmark(i);  
             System.out.println("书签" + (i+1) + "的名称是:" + bookmark.getName());  
             System.out.println("开始位置:" + bookmark.getStart());  
             System.out.println("结束位置:" + bookmark.getEnd());  
          }  
       }  
        
       /** 
        * 读表格 
        * 每一个回车符代表一个段落,所以对于表格而言,每一个单元格至少包含一个段落,每行结束都是一个段落。 
        * @param range 
        */  
       private void readTable(Range range) {  
          //遍历range范围内的table。  
          TableIterator tableIter = new TableIterator(range);  
          Table table;  
          TableRow row;  
          TableCell cell;  
          while (tableIter.hasNext()) {  
             table = tableIter.next();  
             int rowNum = table.numRows();  
             for (int j=0; j<rowNum; j++) {  
                row = table.getRow(j);  
                int cellNum = row.numCells();  
                for (int k=0; k<cellNum; k++) {  
                    cell = row.getCell(k);  
                    //输出单元格的文本  
                    System.out.println(cell.text().trim());  
                }  
             }  
          }  
       }  
        
       /** 
        * 读列表 
        * @param range 
        */  
       private void readList(Range range) {  
          int num = range.numParagraphs();  
          Paragraph para;  
          for (int i=0; i<num; i++) {  
             para = range.getParagraph(i);  
             if (para.isInList()) {  
                System.out.println("list: " + para.text());  
             }  
          }  
       }  
        
       /** 
        * 输出Range 
        * @param range 
        */  
       private void printInfo(Range range) {  
          //获取段落数  
          int paraNum = range.numParagraphs();  
          System.out.println(paraNum);  
          for (int i=0; i<paraNum; i++) {  
             //this.insertInfo(range.getParagraph(i));  
             System.out.println("段落" + (i+1) + ":" + range.getParagraph(i).text());  
             if (i == (paraNum-1)) {  
                this.insertInfo(range.getParagraph(i));  
             }  
          }  
          int secNum = range.numSections();  
          System.out.println(secNum);  
          Section section;  
          for (int i=0; i<secNum; i++) {  
             section = range.getSection(i);  
             System.out.println(section.getMarginLeft());  
             System.out.println(section.getMarginRight());  
             System.out.println(section.getMarginTop());  
             System.out.println(section.getMarginBottom());  
             System.out.println(section.getPageHeight());  
             System.out.println(section.text());  
          }  
       }  
        
       /** 
        * 插入内容到Range,这里只会写到内存中 
        * @param range 
        */  
       private void insertInfo(Range range) {  
          range.insertAfter("Hello");  
       }  
        
    } 

    展开全文
  • Java 读取Word文档中的文本内容

    万次阅读 2019-04-25 16:53:26
    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容。Free Spire.Doc for Java提供了两种方法来读取Word文档中的内容,一种是直接获取文档中的所有文本内容,另一种是遍历...
  • 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用...这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个Word文档,废话不多说,下面开始。第一部分:复制部分内容
  • Springboot 项目freemarker导出word文档(文档内容包括数据以及服务器图片) 前些天有需求要完成导出word文档功能,基础数据导出word文档,网上也能搜到很多源代码,但是我这边要求是服务器上的图片(只给出服务器图片...
  • asp.net页面显示word文档内容

    万次阅读 热门讨论 2011-03-09 13:25:00
    在实际开发过程中,经常会遇到在页面上直接显示word文档的内容,当然这里仅仅涉及到查看文档内容,不涉及修改和保存操作,这里是利用Office的COM组件,将word文档转换程html格式后显示在页面中,html页面中显示的...
  • python批量修改word文档内容

    千次阅读 2020-04-28 17:17:47
    批量word文档内容 用到的python模块 pip install python-docx 脚本内容 #!/usr/bin/env python # -*- coding: utf-8 -*- import os import docx import sys #需替换文档目录 path = u'G:\文档修改' #自动创建 tlog ...
  • 本来是想写 用nodejs 或者 js 将word文档转为html的脚本, js在IE浏览器下有 new ActiveApplication 对象可以 获取文档 nodejs 获取文档看这篇http://www.jianshu.com/p/68a420a68ded 因为还没时间整理 所以先给...
  • 使用poi组件自动填充模板word内容和图片.
  • C# 读取并显示word文档中的内容

    万次阅读 2019-03-17 18:33:26
    然后就想到了将word文档直接显示到窗体中,并且有滚动条可以拉动进行查看。搜集了一些资料之后找到了合适的方法——利用RichTextBox打开一个有文字格式和图片的Word文档。 1.添加引用 要加入word文档,就需要在”...
  • Python|读取word文档表格内容

    千次阅读 2021-03-15 00:30:09
    问题描述 既然通过python提取word文档内容,这里需要了解一个python第三方库---python-docx库,docx库的基本用法详细查看官方文档: https://python-docx.readthedocs.org/en/latest/ 在这里将要学习到的便是提取...
  • C# 读取Word文档中的文本内容

    万次阅读 2018-04-13 18:01:10
    这篇文章将介绍如何使用C#读取Word文档中的全部或指定段落的文本内容
  • python python-docx 替换word文档部分内容

    万次阅读 2018-03-14 16:39:02
    有人已经做了如何修改一些格式的博客:用python-docx修改已存在的Word文档的表格的字体格式。 我这里给出替换内容给的例子,简单来说,就是使用一个函数.clear()清除原来内容,然后add_run增加内容: document = ...
  • 日常工作中我们经常会遇到这样的问题,将多个word文档的内同合并到一个文档,说实话刚开始的时候我确实是一个个文档打开,然后复制、粘贴这是文件数比较少的情况下,如果文件数非常多这样一个个打开岂不是很麻烦,...
  • 通过 poi 设置 word 文档 表格内容样式和 页眉页脚样式
  • 2、如果你的word文档里面没有太多图片,可以复制粘贴。不过图片要一张张单独处理。 3、有图片又不想复制粘贴,可以先将word转成PDF,转化方式如图; 然后拖拽过去,这样虽然仍是以pdf文档存在,但每次打开都会直...
  • aspose将word文档转为html内容

    千次阅读 2019-07-25 18:21:37
    网站开发过程中,有时候需要将word内容展示在网页,可以通过aspose将doc文件直接转为pdf进行预览,但是有时候可能需要就在网页的某部分信息中显示内容,而不需要在线预览,这时候可以考虑将word内容简单转换为html...
  • 我最近在研究word文档的解析,除了用poi的方式解析,还有什么方式可以解析word的文档的
  • 网页内容导出word文档jquery插件

    千次阅读 2017-05-15 15:11:41
    插件描述:jquery.wordexport.js是一款将网页制定标签容器中的文本内容生成并导出word文档插件,借助该jQuery插件,可以将网页内容导出Word文档。 先需要引入jquery,然后引入FileSaver.js、jquery.wordexport.js...
  • word多个文档替换内容

    万次阅读 热门讨论 2018-09-05 14:51:57
    替换文件夹下所有文档内容,需要替换的文档不能打开,采用宏进行批量替换,亲测成功,测试是word2016 根据简书作者改编https://www.jianshu.com/p/9d348b8015b6?utm_campaign=maleskine&amp;utm_content=note...
  • JS获取word文档内容到html页面

    万次阅读 2017-12-12 16:12:36
    <!DOCTYPE html> <title>Title var w = new ActiveXObject('Word.Application'); var docText; var obj;
  • word文档密码破解

    万次阅读 热门讨论 2018-12-20 16:39:12
    有的时候,为了保护word文档不被编辑以及被其他人乱修改,我们会对word文档进行一个密码设置,以此来保护word文档。可是当我们忘记设置的密码怎么办? 我们可以尝试下面的方法: 法一:借助破解工具:Word ...
  • OpenXML SDK 读取WORD文档中的内容控件

    千次阅读 2017-03-22 15:28:55
    OpenXML SDK 读取WORD文档中的内容控件
  • 说到编辑文本,大家第一个想到的肯定就是TXT文本文档以及Word文档了吧。其中TXT文本文档以纯输入文本而文明,而Word则还支持各种文字格式、排版、以及插入图片等更多高阶的操作而深受学生、职场人的欢迎。 不过...
  • C# 读取Word文档中的文本内容 这篇文章将介绍如何使用C#和Free Spire.Doc组件读取Word文档中的文本内容。Free Spire.Doc提供了两种方法来读取Word文档中的内容,一种是直接获取文档中的所有文本内容,另一种是遍历...
  • Python修改Word文档内容和插入图片

    千次阅读 2021-02-25 21:25:43
    代码如下 #!/usr/bin/python # coding:utf-8 import docx def main(): filepath = 'test.docx' filepath1 = 'wtest.docx' newdocx = docx.Document(filepath) table = newdocx.tables for oTable in table: ...
  • XML导出word文档

    千次阅读 2018-01-25 10:58:12
    最近做项目,需要导出word文档的报表,网上查询了一些资料,感觉用xml做这个相对比较简单,Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 304,734
精华内容 121,893
关键字:

word文档查询内容