问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

读取word文档,并将其中的内容按原来的样式输出,望各位大神赐教!!!

发布网友 发布时间:2022-05-11 02:48

我来回答

2个回答

热心网友 时间:2024-02-08 05:57

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();

}

}

追问这个方法不是将,word内容读出的方法,不过还是谢谢你!

追答OI 解析word内容,但是没法解析格式。
读出来你要自己控制格式。
试试 直接用文件流读word,然后设置 response ContentType,以html输出。

热心网友 时间:2024-02-08 05:58

能不能先转换一下,成PDF保证格式不变,然后上传?
其他情况想保证格式不变,比较难实现。
静等大神。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 如何画眉毛分解图 如何用C#读取Word内容? 如何在控制台程序中读取WORD文档的内容 数据库读取word文档内容 如何在C#中读取Word文档 快手账号异常什么原因 二氧化氯是什么,用它洗头、洗脸可以吗? 田七花茶的药用价值 药用玫瑰就是玫瑰花茶吗? 阴阳师脚本有什么可以推荐的么 哪一个民族有敲手鼓的习惯 灰狼&艾斯卡尔的《楼兰》 歌词 敲打手鼓为什么中间和边缘发出的声音不一样? 如何正确的敲打非洲手鼓呢 儿歌《手鼓敲起来》歌词是什么? 恐龙灭绝是多种原因造成的? 为什么恐龙灭绝是多种原因造成的? 导致恐龙灭绝的原因? 为什么世界上的恐龙会灭绝? 每天吃玛卡红枣枸杞煮水会发胖吗 delphi读取WORD文档每一页的内容 5S有哪八大作用? 怎么帮别人解封的步骤 黄瓜炒鸡胸肉的做法,黄瓜炒鸡胸肉怎么做好吃,黄瓜炒 黄瓜鸡胸肉的做法 黄瓜鸡胸肉怎么做 黄瓜炒鸡胸肉怎么做 能否指点下低卡盐水鸡胸拌黄瓜的做法? 绿源电动车的电瓶6414的有吗? 国标3号角钢的重量是多少? 微信好友骗钱怎么办 鼠标没有螺丝怎么拆? 你好,我在微信上被人骗了钱3900块,可以报警吗? azzor鼠标怎么拆开 家里马桶堵的不行了 一直很难用 是找专业工人疏通?还是换马桶?需要换管道吗? 马桶老堵,请问更换马桶是连水箱一起换还是只要换个马桶就可以了? 家里的马桶堵塞了,要怎么处理堵的问题,也就是治堵啦??! 坐便器堵了 进水很慢 下水也慢 还有救不 难道得换马桶了吗 马桶堵了该咋办 难道马桶里掉了东西进去,就只能换马桶么?为什么叫工人来修就说通不了一定要我换马桶呢