`
fengzheng0603
  • 浏览: 73034 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java读写word文档

    博客分类:
  • java
阅读更多

 

    网上关于java读写word的文档很多,没找到最好的,我抄了一篇,是在e盘新建一个hello.docx文档里面写入Hello, from Office 2007!文字作为标识,以hello.docx为模板在e盘下用java新建一个e:\\response.docx,写入哈哈,终于可以用java写word了,Hello, Office 2007, from Java6!

package com;

import static org.junit.Assert.assertEquals;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

public class InputToword {
	
	@Test public void modifyDocumentAndSave()throws IOException, ZipException, 
	SAXException,ParserConfigurationException,TransformerException,TransformerConfigurationException
	{
		//读取e盘下的hello.docx文档
		ZipFile docxFile =new ZipFile(new File("e:\\hello.docx"));
		//解压缩后获得里面和内容相关的xml,word文档是可以解压的,大家可以解压了试试
		ZipEntry documentXML =docxFile.getEntry("word/document.xml");
		InputStream documentXMLIS =docxFile.getInputStream(documentXML);
		DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
		Document doc =dbf.newDocumentBuilder().parse(documentXMLIS);
	
		//获得文档里相关的节点
		Element docElement = doc.getDocumentElement();
		assertEquals("w:document", docElement.getTagName());
	
		Element bodyElement = (Element)docElement.getElementsByTagName("w:body").item(0);
		assertEquals("w:body", bodyElement.getTagName());
	
		Element pElement = (Element)bodyElement.getElementsByTagName("w:p").item(0);
		assertEquals("w:p", pElement.getTagName());
	
		Element rElement = (Element)pElement.getElementsByTagName("w:r").item(0);
		assertEquals("w:r", rElement.getTagName());
	
		Element tElement = (Element)rElement.getElementsByTagName("w:t").item(0);
		assertEquals("w:t", tElement.getTagName());
	
		//查找文档中的Hello, from Office 2007!文字部分
		assertEquals("Hello, from Office 2007!",tElement.getTextContent());
	    //写入新的内容
		tElement.setTextContent("哈哈,终于可以用java写word了,Hello, Office 2007, from Java6!");
	
		Transformer t =TransformerFactory.newInstance().newTransformer();
		ByteArrayOutputStream baos =new ByteArrayOutputStream();
		t.transform(new DOMSource(doc),
		new StreamResult(baos));
	
		//创建新的要输出的word文档,按钮原来word文档的内容写入新的文档中。
		ZipOutputStream docxOutFile = new ZipOutputStream(new FileOutputStream("e:\\response.docx"));
		Enumeration entriesIter =docxFile.entries();
		while (entriesIter.hasMoreElements())
		{
			ZipEntry entry = (ZipEntry) entriesIter.nextElement();
		
			if (entry.getName().equals("word/document.xml"))
			{
				byte[] data = baos.toByteArray();
				docxOutFile.putNextEntry(new ZipEntry(entry.getName()));
				docxOutFile.write(data, 0, data.length);
				docxOutFile.closeEntry();
			}
			else
			{
				InputStream incoming =docxFile.getInputStream(entry);
				byte[] data = new byte[1024 * 16];
				int readCount =incoming.read(data, 0, data.length);
				docxOutFile.putNextEntry(new ZipEntry(entry.getName()));
				docxOutFile.write(data, 0, readCount);
				docxOutFile.closeEntry();
			}
		}
		docxOutFile.close();

	}

}

  测试的时候,点右键,Run As 用jUnit Test测试,运行完成后会生成新的名字为e:\\response.docx的word文档。

 

分享到:
评论
2 楼 liuxinli3820009 2016-03-15  
                 
1 楼 lliiqiang 2015-04-29  
有的东西提出来也不会有结果,那么隐含就不会有人提它,有措施未必正确,关键是最终效果.

相关推荐

    Java读取Word文档页数

    本主题将深入探讨如何利用给定的`itextpdf-5.5.9.jar`和`jacob.jar`这两个库来实现Java读取Word文档页数的功能。 `jacob.jar`是一个Java到COM桥接库,它允许Java应用程序调用Microsoft Office组件,如Word,从而...

    java读取word文档.pdf

    首先,标题“java读取word文档.pdf”和描述“java读取word文档.pdf”暗示了文章内容可能涉及使用Java语言读取Word文档的技术。 从片段中可以提取到的关键技术点包括: 1. Apache POI库:Apache POI是一个开源的...

    Java读取word文档内容并输出成网页(含图片,公式)

    在这个场景中,我们将重点讨论如何使用Java POI读取Word文档并将其内容转换为HTML网页,同时确保图片和公式等复杂元素能够正确显示。 首先,你需要在你的Java项目中引入Apache POI库。可以通过Maven或Gradle来添加...

    java读取word文档

    ### Java读取Word文档知识点详解 #### 一、引言 在日常的软件开发工作中,处理办公文档(如Word)的需求十分常见。Java作为一种广泛使用的编程语言,提供了多种方式来读取Word文档中的内容,包括但不限于使用...

    java读取word文档内容以及字体大小和颜色

    java读取不同版本文档的内容以及字体大小,实现对文档格式进行匹配!

    Java读取多Word文档中指定位置的表格数据或文本内容

    Java读取Word文档中指定位置(可以自己自定义位置)的表格数据或文本内容 * @param filePath 文档路径 * @param start 指定位置开始读取表格数据的该位置上的字符串 * @param end 指定位置开始结束读取表格数据的该...

    java读取Word文档依赖jar包

    在本文中,我们将详细讨论如何使用Apache POI库来读取Word文档,以及在Java项目中如何添加和配置依赖。 首先,要使用Apache POI读取Word文档,你需要下载并引入相关的jar包。在给定的压缩包“poi读取word依赖包”中...

    java读取word,pdf格式文档方法

    Java 读取 Word、PDF 格式文档方法 Java 是一种广泛应用的编程语言,对文档操作是其重要的应用场景之一。本文将介绍 Java 如何读取 Word、PDF 格式文档的几种方法。 使用 Jacob Jacob 是一个桥接工具,连接 Java ...

    java读取word文档.doc

    Java 读取 Word 文档是常见的需求,尤其是在自动化处理、数据导出或文档生成的场景中。本示例主要探讨如何使用 Java 处理 RTF(Rich Text Format)文档,而不是直接读取 .doc 或 .docx 文件。这是因为直接读取 Word ...

    Jacob.jar官方文档,java读取word文档

    jacob官方文档,java读取word文档

    java 实现 word 文档的在线预览

    转换过程中,我们需要一个能够读取Word文档并将其转化为HTML的库,例如Apache POI或Spire.Doc for Java。 Apache POI是Java中处理Microsoft Office格式文件的一个流行库,它支持读写Word(.doc/.docx)文件。然而,...

    Java读取Word表格内容

    通过Java读取word表格中的内容,将内容存到数据库中,将Word中的图片存到硬盘中

    java实现读取word文件并且上传到数据库

    首先,为了读取Word文件,我们需要使用Java的一个库,如Apache POI。Apache POI是一个流行的开源项目,提供了API来处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。通过使用Apache POI,我们可以解析...

    java 利用POI读取Word文件中的内容

    在Java中,读取Word文档(.docx格式)主要使用XWPF(XML Word Processing)API。以下是使用POI读取Word文件的基本步骤: 1. **添加依赖**:在项目中引入Apache POI的依赖库。如果你使用的是Maven,可以在pom.xml...

    java 实现word文档的读写编辑

    本人编写的用java 实现对word文档的新建,打开,写入保存。需要包含poi外包实现。

    java2word 文档

    Java2Word 是一个Java库,用于将数据转换为Microsoft Word文档。这个库主要利用Jacob组件,这是一个Java-COM Bridge,允许Java程序与Windows平台上的COM(Component Object Model)组件进行交互,尤其是处理...

    java获取word文档的条目化内容

    java调用PageOffice在线编辑word文件的时候,获取word文档的条目化内容。 PageOffice V4.0 企业版试用序列号:Q37LN-W8NI-KFSQ-LEY3Y 部署步骤: 1. 拷贝simpledemo8文件夹到Tomcat的webapps目录下 2. 访问...

    java操作word(包含书签插值)

    通过这些API,你可以创建、修改和读取Word文档,包括书签的插入和替换。 3. **书签插值** 书签是Word文档中的一个特性,可以标记文档的特定位置。在Java中,可以通过查找书签并替换其内容来实现动态数据插入。例如...

Global site tag (gtag.js) - Google Analytics