javaword,javaword模板替换

本文目录一览:

java生成word文档的问题

Jacob解决Word文档的读写问题收藏

Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。Jacob下载的地址为:

;package_id=118368

配置:

(1)将解压包中的jacob.dll(x86常用,x64)拷到jdk安装目录下的jre\bin文件夹或windows安装路径下的WINDOWS\system32文件夹下

(2)将jacob.jar文件拷到classpath下即可

常见问题解决:

对于”java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jacob-1.14.3-x86.dll: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正”这个问题,可以通过

重新下载Jacob的jar及dll文件(最好版本比现在的低,如1.11)解决

实例制作(主要功能:标题制作,表格制作,合并表格,替换文本,页眉页脚,书签处理):

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

public class WordOperate {

public static void main(String args[]) {

ActiveXComponent wordApp = new ActiveXComponent(“Word.Application”); // 启动word

// Set the visible property as required.

Dispatch.put(wordApp, “Visible”, new Variant(true));// //设置word可见

Dispatch docs = wordApp.getProperty(“Documents”).toDispatch();

// String inFile = “d:\\test.doc”;

// Dispatch doc = Dispatch.invoke(docs, “Open”, Dispatch.Method,

// new Object[] { inFile, new Variant(false), new Variant(false)},//参数3,false:可写,true:只读

// new int[1]).toDispatch();//打开文档

Dispatch document = Dispatch.call(docs, “Add”).toDispatch();// create new document

String userName = wordApp.getPropertyAsString(“Username”);// 显示用户信息

System.out.println(“用户名:” + userName);

// 文档对齐,字体设置////////////////////////

Dispatch selection = Dispatch.get(wordApp, “Selection”).toDispatch();

Dispatch align = Dispatch.get(selection, “ParagraphFormat”)

.toDispatch(); // 行列格式化需要的对象

Dispatch font = Dispatch.get(selection, “Font”).toDispatch(); // 字型格式化需要的对象

// 标题处理////////////////////////

Dispatch.put(align, “Alignment”, “1”); // 1:置中 2:靠右 3:靠左

Dispatch.put(font, “Bold”, “1”); // 字型租体

Dispatch.put(font, “Color”, “1,0,0,0”); // 字型颜色红色

Dispatch.call(selection, “TypeText”, “Word文档处理”); // 写入标题内容

Dispatch.call(selection, “TypeParagraph”); // 空一行段落

Dispatch.put(align, “Alignment”, “3”); // 1:置中 2:靠右 3:靠左

Dispatch.put(selection, “Text”, ” “);

Dispatch.call(selection, “MoveDown”); // 光标标往下一行

//表格处理////////////////////////

Dispatch tables = Dispatch.get(document, “Tables”).toDispatch();

Dispatch range = Dispatch.get(selection, “Range”).toDispatch();

Dispatch table1 = Dispatch.call(tables, “Add”, range, new Variant(3),

new Variant(2), new Variant(1)).toDispatch(); // 设置行数,列数,表格外框宽度

// 所有表格

Variant tableAmount = Dispatch.get(tables, “count”);

System.out.println(tableAmount);

// 要填充的表格

Dispatch t1 = Dispatch.call(tables, “Item”, new Variant(1))

.toDispatch();

Dispatch t1_row = Dispatch.get(t1, “rows”).toDispatch();// 所有行

int t1_rowNum = Dispatch.get(t1_row, “count”).getInt();

Dispatch.call(Dispatch.get(t1, “columns”).toDispatch(), “AutoFit”);// 自动调整

int t1_colNum = Dispatch.get(Dispatch.get(t1, “columns”).toDispatch(),

“count”).getInt();

System.out.println(t1_rowNum + ” ” + t1_colNum);

for (int i = 1; i = t1_rowNum; i++) {

for (int j = 1; j = t1_colNum; j++) {

Dispatch cell = Dispatch.call(t1, “Cell”, new Variant(i),

new Variant(j)).toDispatch();// 行,列

Dispatch.call(cell, “Select”);

Dispatch.put(selection, “Text”, “cell” + i + j); // 写入word的内容

Dispatch.put(font, “Bold”, “0”); // 字型租体(1:租体 0:取消租体)

Dispatch.put(font, “Color”, “1,1,1,0”); // 字型颜色

Dispatch.put(font, “Italic”, “1”); // 斜体 1:斜体 0:取消斜体

Dispatch.put(font, “Underline”, “1”); // 下划线

Dispatch Range = Dispatch.get(cell, “Range”).toDispatch();

String cellContent = Dispatch.get(Range, “Text”).toString();

System.out.println((cellContent.substring(0, cellContent

.length() – 1)).trim());

}

Dispatch.call(selection, “MoveDown”); // 光标往下一行(才不会输入盖过上一输入位置)

}

//合并单元格////////////////////////

Dispatch.put(selection, “Text”, ” “);

Dispatch.call(selection, “MoveDown”); // 光标标往下一行

Dispatch range2 = Dispatch.get(selection, “Range”).toDispatch();

Dispatch table2 = Dispatch.call(tables, “Add”, range2, new Variant(8),

new Variant(4), new Variant(1)).toDispatch(); // 设置行数,列数,表格外框宽度

Dispatch t2 = Dispatch.call(tables, “Item”, new Variant(2))

.toDispatch();

Dispatch beginCell = Dispatch.call(t2, “Cell”, new Variant(1),

new Variant(1)).toDispatch();

Dispatch endCell = Dispatch.call(t2, “Cell”, new Variant(4),

new Variant(4)).toDispatch();

Dispatch.call(beginCell, “Merge”, endCell);

for (int row = 1; row = Dispatch.get(

Dispatch.get(t2, “rows”).toDispatch(), “count”).getInt(); row++) {

for (int col = 1; col = Dispatch.get(

Dispatch.get(t2, “columns”).toDispatch(), “count”).getInt(); col++) {

if (row == 1) {

Dispatch cell = Dispatch.call(t2, “Cell”, new Variant(1),

new Variant(1)).toDispatch();// 行,列

Dispatch.call(cell, “Select”);

Dispatch.put(font, “Color”, “1,1,1,0”); // 字型颜色

Dispatch.put(selection, “Text”, “merge Cell!”);

} else {

Dispatch cell = Dispatch.call(t2, “Cell”, new Variant(row),

new Variant(col)).toDispatch();// 行,列

Dispatch.call(cell, “Select”);

Dispatch.put(font, “Color”, “1,1,1,0”); // 字型颜色

Dispatch.put(selection, “Text”, “cell” + row + col);

}

}

Dispatch.call(selection, “MoveDown”);

}

//Dispatch.call(selection, “MoveRight”, new Variant(1), new Variant(1));// 取消选择

// Object content = Dispatch.get(doc,”Content”).toDispatch();

// Word文档内容查找及替换////////////////////////

Dispatch.call(selection, “TypeParagraph”); // 空一行段落

Dispatch.put(align, “Alignment”, “3”); // 1:置中 2:靠右 3:靠左

Dispatch.put(font, “Color”, 0);

Dispatch.put(selection, “Text”, “欢迎,Hello,world!”);

Dispatch.call(selection, “HomeKey”, new Variant(6));// 移到开头

Dispatch find = Dispatch.call(selection, “Find”).toDispatch();// 获得Find组件

Dispatch.put(find, “Text”, “hello”); // 查找字符串”hello”

Dispatch.put(find, “Forward”, “True”);// 向前查找

// Dispatch.put(find, “Format”, “True”);// 设置格式

Dispatch.put(find, “MatchCase”, “false”);// 大小写匹配

Dispatch.put(find, “MatchWholeWord”, “True”); // 全字匹配

Dispatch.call(find, “Execute”); // 执行查询

Dispatch.put(selection, “Text”, “你好”);// 替换为”你好”

//使用方法传入的参数parameter调用word文档中的MyWordMacro宏//

//Dispatch.call(document,macroName,parameter);

//Dispatch.invoke(document,macroName,Dispatch.Method,parameter,new int[1]);

//页眉,页脚处理////////////////////////

Dispatch ActiveWindow = wordApp.getProperty(“ActiveWindow”)

.toDispatch();

Dispatch ActivePane = Dispatch.get(ActiveWindow, “ActivePane”)

.toDispatch();

Dispatch View = Dispatch.get(ActivePane, “View”).toDispatch();

Dispatch.put(View, “SeekView”, “9”); //9是设置页眉

Dispatch.put(align, “Alignment”, “1”); // 置中

Dispatch.put(selection, “Text”, “这里是页眉”); // 初始化时间

Dispatch.put(View, “SeekView”, “10”); // 10是设置页脚

Dispatch.put(align, “Alignment”, “2”); // 靠右

Dispatch.put(selection, “Text”, “这里是页脚”); // 初始化从1开始

//书签处理(打开文档时处理)////////////////////////

//Dispatch activeDocument = wordApp.getProperty(“ActiveDocument”).toDispatch();

Dispatch bookMarks = Dispatch.call(document, “Bookmarks”).toDispatch();

boolean isExist = Dispatch.call(bookMarks, “Exists”, “bookMark1”)

.getBoolean();

if (isExist == true) {

Dispatch rangeItem1 = Dispatch.call(bookMarks, “Item”, “bookMark1”)

.toDispatch();

Dispatch range1 = Dispatch.call(rangeItem1, “Range”).toDispatch();

Dispatch.put(range1, “Text”, new Variant(“当前是书签1的文本信息!”));

String bookMark1Value = Dispatch.get(range1, “Text”).toString();

System.out.println(bookMark1Value);

} else {

System.out.println(“当前书签不存在,重新建立!”);

Dispatch.call(bookMarks, “Add”, “bookMark1”, selection);

Dispatch rangeItem1 = Dispatch.call(bookMarks, “Item”, “bookMark1”)

.toDispatch();

Dispatch range1 = Dispatch.call(rangeItem1, “Range”).toDispatch();

Dispatch.put(range1, “Text”, new Variant(“当前是书签1的文本信息!”));

String bookMark1Value = Dispatch.get(range1, “Text”).toString();

System.out.println(bookMark1Value);

}

//保存操作////////////////////////

Dispatch.call(document, “SaveAs”, “D:/wordOperate.doc”);

//Dispatch.invoke((Dispatch) doc, “SaveAs”, Dispatch.Method, new Object[]{htmlPath, new Variant(8)}, new int[1]); //生成html文件

// 0 = wdDoNotSaveChanges

// -1 = wdSaveChanges

// -2 = wdPromptToSaveChanges

//Dispatch.call(document, “Close”, new Variant(0));

// // worddoc.olefunction(“protect”,2,true,””);

// // Dispatch bookMarks = wordApp.call(docs,”Bookmarks”).toDispatch();

// // System.out.println(“bookmarks”+bookMarks.getProgramId());

// //Dispatch.call(doc, “Save”); //保存

// // Dispatch.call(doc, “Close”, new Variant(true));

// //wordApp.invoke(“Quit”,new Variant[]{});

// wordApp.safeRelease();//Finalizers call this method

}

}

java怎么给word文档加水印

可以使用Free Spire.Doc for Java在word文档中添加文本水印或图片水印。Free Spire.Doc for Java下载链接:网页链接

1.添加文本水印——代码如下:

import com.spire.doc.*;

import com.spire.doc.documents.WatermarkLayout;

import java.awt.*;

public class WordTextWatermark {

public static void main(String[] args) {

Document document = new Document();

document.loadFromFile(“Sample.docx”);

insertTextWatermark(document.getSections().get(0));

}

private static void insertTextWatermark(Section section) {

TextWatermark txtWatermark = new TextWatermark();

txtWatermark.setText(“内部使用”);

txtWatermark.setFontSize(40);

txtWatermark.setColor(Color.red);

txtWatermark.setLayout(WatermarkLayout.Diagonal);

section.getDocument().setWatermark(txtWatermark);

}

}

2.添加图片水印——代码如下:

import com.spire.doc.*;

public class WordImageWatermark {

public static void main(String[] args)  throws Exception{

Document document = new Document();

document.loadFromFile(“Sample.docx”);

PictureWatermark picture = new PictureWatermark();

picture.setPicture(“logo.png”);

picture.setScaling(5);

picture.isWashout(false);

document.setWatermark(picture);

document.saveToFile(“out/result2.docx”,FileFormat.Docx )

}

}

如何在java中操作word

想用java操作word文件?jacob是个不错的选择,也就是java-com桥,你可以在下载,我下载的版本是1.12,注意版本太低的话可能会报错。

如果没有特殊需求,可以直接使用jacob_*.zip中提供的jacob.jar和jacob.dll。把jacob.dll文件放在系统可以找得到的

路径上,一般放c:/windows/system32下就行了,注意你用的jacob.dll文件和你的jacob.jar包要匹配,否则会报错哦! 

 

如果想自己编译也很简单,把jacob_*_src.zip解开,建个工程,在build.xml中稍作配置即可: 

property name=”JDK” value=”D:\Java\j2sdk1.4.2_13″/  

property name=”MSDEVDIR” value=”D:\Microsoft Visual Studio\VC98″/  

property name=”version” value=”1.12″/

看出来了吗,你的机器上需要有JDK和VC环境,VC是用来生成jacob.dll文件的,如果编译时说找不到MSPDB60.DLL,那就在你的

Microsoft Visual Studio目录下搜索一下,拷贝到D:\Microsoft Visual

Studio\VC98\Bin下就行了。

如果需要对jacob里的jar包改名,(虽然通常不会发生这种情况,但如果你需要两个版本的jacob同时使用,改名可能是一种选择),这时你的工作就多一些:

(1)package改名是必须的了,比如我们把src下的com.jacob.activeX改为com.test.jacob.activeX,把

com.jacob.com改为com.test.jacob.com,打包时只有这两个包是有用的,所以只改它们就够了。

(2)然后修改build.xml中src.java.jacob.mainpackage的value为com.test.jacob,修改java.class.main的value为com.test.jacob.com.Jacob。

(3)别忘了javaJarBin中打包的源码路径也要改,include name=”com/**/*.class” /改为include name=”com/test/**/*.class” /。

(4)build.xml中对生成的dll和jar包也要改个名,比如我们把这两个文件改为jacob_test.dll和

jacob_test.jar。修改build.xml中的enerated.filename.dll和generated.filename.jar

的value为你新改的名字。

(5)com.test.jacob.com.LibraryLoader中,System.loadLibrary(“jacob”);改成

System.loadLibrary(“jacob_test”);

(6)另外,很重要的,在jni中*.cpp和*.h中com_jacob_com统一改为com_test_jacob_com,com/jacob

/com统一改为com/test/jacob/com。

(7)ant编译,编译好的文件在release目录下。

(8)最后把编译好的jacob_test.dll文件放在windows/system32下就大功告成了。

现在该用到jacob.jar了,如果你自己修改过jar包的名字,用新改的jar包,如jacob_test.jar,这里统一称为jacob.jar。

首先在classpath中引入jacob.jar包,如果是web应用,WEB-INF的lib中也要加入jacob.jar包。

下面给一个例子:

类ReplaceWord.java

import com.jacob.com.*;

import com.jacob.activeX.*;

public class ReplaceWord {

public static void main(String[] args) {

ActiveXComponent app = new ActiveXComponent(“Word.Application”); //启动word

String inFile = “C:\\test.doc”; //要替换的word文件

try {

app.setProperty(“Visible”, new Variant(false)); //设置word不可见

Dispatch docs = app.getProperty(“Documents”).toDispatch();

Dispatch doc = Dispatch.invoke(docs,”Open”,Dispatch.Method,new

Object[] { inFile, new Variant(false),new Variant(false) }, new

int[1]).toDispatch();

//打开word文件,注意这里第三个参数要设为false,这个参数表示是否以只读方式打开,因为我们要保存原文件,所以以可写方式打开。

 

Dispatch

selection=app.getProperty(“Selection”).toDispatch();//获得对Selection组件

Dispatch.call(selection, “HomeKey”, new Variant(6));//移到开头

Dispatch find = Dispatch.call(selection, “Find”).toDispatch();//获得Find组件

Dispatch.put(find, “Text”, “name”); //查找字符串”name”

Dispatch.call(find, “Execute”); //执行查询

Dispatch.put(selection, “Text”, “张三”); //替换为”张三”

Dispatch.call(doc, “Save”); //保存

Dispatch.call(doc, “Close”, new Variant(false));

} catch (Exception e) {

e.printStackTrace();

} finally {

app.invoke(“Quit”, new Variant[] {});

app.safeRelease();

}

}

}

也许你会问,我怎么知道要调用哪个方法传哪些参数来进行操作?别忘了,word还有宏呢!自己录制一个宏,编辑这个宏就可以看到代码了!用哪个对象的哪个方法就看你的了。

我总结了一下:

document下的组件都用Dispatch selection=app.getProperty(“Selection”).toDispatch()这种方法获得;

再往下的组件就需要调用selection的方法来获取,如 Dispatch find = Dispatch.call(selection, “Find”).toDispatch();

如果某个方法需要参数,Dispatch doc =

Dispatch.invoke(docs,”Open”,Dispatch.Method,new Object[] { inFile, new

Variant(false),new Variant(false) }, new

int[1]).toDispatch()是一个例子,这是调用docs的Open方法,Object[]数组里就是它需要的参数了;

如果要修改某个组件的属性呢,用Dispatch.put(find, “Text”, “name”)这种形式,”Text”是属性名,”name”是值。

怎么用java导出word

java导出word代码如下:

package com.bank.util;

import java.awt.Color;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.FontFactory;

import com.lowagie.text.Image;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Phrase;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.rtf.RtfWriter2;

public class WordTools {

public void createDocContext(String file) throws DocumentException,

IOException {

// 设置纸张大小

Document document = new Document(PageSize.A4);

// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

RtfWriter2.getInstance(document, new FileOutputStream(file));

document.open();

// 设置中文字体

BaseFont bfChinese = BaseFont.createFont(“STSongStd-Light”,

“UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED);

// 标题字体风格

Font titleFont = new Font(bfChinese, 12, Font.BOLD);

// 正文字体风格

Font contextFont = new Font(bfChinese, 10, Font.NORMAL);

Paragraph title = new Paragraph(“标题”);

// 设置标题格式对齐方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

String contextString = “iText是一个能够快速产生PDF文件的java类库。”

+ ” \n”// 换行

+ “iText的java类对于那些要产生包含文本,”

+ “表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。”

+ “使用iText与PDF能够使你正确的控制Servlet的输出。”;

Paragraph context = new Paragraph(contextString);

// 正文格式左对齐

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

// 离上一段落(标题)空的行数

context.setSpacingBefore(5);

// 设置第一行空的列数

context.setFirstLineIndent(20);

document.add(context);

//利用类FontFactory结合Font和Color可以设置各种各样字体样式

/**

* Font.UNDERLINE 下划线,Font.BOLD 粗体

*/

Paragraph underline = new Paragraph(“下划线的实现”, FontFactory.getFont(

FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,

new Color(0, 0, 255)));

document.add(underline);

// 设置 Table 表格

Table aTable = new Table(3);

int width[] = {25,25,50};

aTable.setWidths(width);//设置每列所占比例

aTable.setWidth(90); // 占页面宽度 90%

aTable.setAlignment(Element.ALIGN_CENTER);//居中显示

aTable.setAlignment(Element.ALIGN_MIDDLE);//纵向居中显示

aTable.setAutoFillEmptyCells(true); //自动填满

aTable.setBorderWidth(1); //边框宽度

aTable.setBorderColor(new Color(0, 125, 255)); //边框颜色

aTable.setPadding(0);//衬距,看效果就知道什么意思了

aTable.setSpacing(0);//即单元格之间的间距

aTable.setBorder(2);//边框

//设置表头

/**

* cell.setHeader(true);是将该单元格作为表头信息显示;

* cell.setColspan(3);指定了该单元格占3列;

* 为表格添加表头信息时,要注意的是一旦表头信息添加完了之后, \

* 必须调用 endHeaders()方法,否则当表格跨页后,表头信息不会再显示

*/

Cell haderCell = new Cell(“表格表头”);

haderCell.setHeader(true);

haderCell.setColspan(3);

aTable.addCell(haderCell);

aTable.endHeaders();

Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);

Cell cell = new Cell(new Phrase(“这是一个测试的 3*3 Table 数据”, fontChinese ));

cell.setVerticalAlignment(Element.ALIGN_TOP);

cell.setBorderColor(new Color(255, 0, 0));

cell.setRowspan(2);

aTable.addCell(cell);

aTable.addCell(new Cell(“#1”));

aTable.addCell(new Cell(“#2”));

aTable.addCell(new Cell(“#3”));

aTable.addCell(new Cell(“#4”));

Cell cell3 = new Cell(new Phrase(“一行三列数据”, fontChinese ));

cell3.setColspan(3);

cell3.setVerticalAlignment(Element.ALIGN_CENTER);

aTable.addCell(cell3);

document.add(aTable);

document.add(new Paragraph(“\n”));

//添加图片

// Image img=Image.getInstance(“”);

// img.setAbsolutePosition(0, 0);

// img.setAlignment(Image.RIGHT);//设置图片显示位置

// img.scaleAbsolute(12,35);//直接设定显示尺寸

// img.scalePercent(50);//表示显示的大小为原尺寸的50%

// img.scalePercent(25, 12);//图像高宽的显示比例

// img.setRotation(30);//图像旋转一定角度

// document.add(img);

document.close();

}

public static void main(String[] args){

WordTools b=new WordTools();

try {

b.createDocContext(“d:/demo.doc”);

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

java操作word 的有哪几种方式

java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估

计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作

方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关

于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表

面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。

—– 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。

—– 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。

1、采用字节的形式读取rtf模板内容

2、将可变的内容字符串转为rtf编码

3、替换原文中的可变部分,形成新的rtf文档

主要程序如下:

public String bin2hex(String bin) {

char[] digital = “0123456789ABCDEF”.toCharArray();

StringBuffer sb = new StringBuffer(“”);

byte[] bs = bin.getBytes();

int bit;

for (int i = 0; i bs.length;i++) {

bit = (bs[i] 0x0f0)

4;

sb.append(“\\'”);

sb.append(digital[bit]);

bit = bs[i] 0x0f;

sb.append(digital[bit]);

}

return sb.toString();

}

public String readByteRtf(InputStream ins, String path){

String sourcecontent =

“”;

try{

ins = new

FileInputStream(path);

byte[] b

= new byte[1024];

if (ins == null) {

System.out.println(“源模板文件不存在”);

}

int bytesRead = 0;

while (true) {

bytesRead = ins.read(b, 0, 1024); // return final read bytes

counts

if(bytesRead == -1) {// end of InputStream

System.out.println(“读取模板文件结束”);

break;

}

sourcecontent += new String(b, 0, bytesRead); // convert to string

using bytes

}

}catch(Exception e){

e.printStackTrace();

}

如何在java中读取word文件

java读取word文档,获取文本内容,保留基本的换行格式。

java用POI对word进行解析。所需jar包,用maven引入

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi-scratchpad/artifactId

version3.2-FINAL/version

/dependency

前端用webuploader上传控件,限制上传文件类型仅支持text和word.

后台MultipartFile接收文件,根据ContentType区分文件类型,区分解析获取文件内容。

word解析:

txt为word的文本内容

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/243579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:57
下一篇 2024-12-12 12:57

相关推荐

  • 心形照片拼图模板

    如何使用心形照片拼图模板 一、模板介绍 心形照片拼图模板是一种让用户可以将自己的照片拼接成一个心形的巧妙设计,每个照片都是一个拼图块,当所有的照片配合完成时,呈现出一个完整的心形。…

    编程 2025-04-29
  • 基尼系数Excel计算模板

    这篇文章将介绍基尼系数Excel计算模板,为大家详细阐述如何使用Excel进行基尼系数的计算。 一、模板下载及导入 首先需要下载基尼系数的Excel计算模板,可以在Excel中通过…

    编程 2025-04-28
  • iCircuit文件电路模板

    iCircuit是一款允许用户在移动设备上轻松创建、模拟和共享电路模板的应用程序。 iCircuit还允许您向其他用户展示您的电路设计,并从其他人那里获取灵感和想法。在本文中,我们…

    编程 2025-04-27
  • Python写Word模板简介

    Python可以用来生成Word文档,让你可以自动化生成报表、合同、申请表等文档。本文将从多个方面详细介绍Python写Word模板的方法和技巧。 一、Word模板的结构 要生成W…

    编程 2025-04-27
  • Vue快捷键生成模板

    Vue是一个高效、灵活的JavaScript框架。在日常的开发过程中,Vue组件模板代码的编写是必不可少的部分。Vue快捷键生成模板是一个优秀的插件,它可以帮助我们在编写Vue组件…

    编程 2025-04-24
  • 深入了解Freemarker模板文件(.ftl文件)

    Freemarker是一种模板引擎,它采用一个测试驱动的数据集生成任何类型的XML(markup languages)或非XML导出。它是一款图灵奖获奖的软件,具有流行、可靠、快速…

    编程 2025-04-24
  • PHPStorm注释模板详解

    PHPStorm是一款强大的PHP开发工具,提供了很多实用的功能,其中注释模板是其中之一。在编写代码时,我们需要加上注释来增加代码的可读性、可维护性和可移植性。使用注释模板可以使我…

    编程 2025-04-23
  • IDEA类注释模板详解

    一、注释模板简介 在开发过程中,注释是源代码中不可缺少的部分。IDEA提供了类注释模板,使得开发者能够方便地生成规范的类注释。类注释模板可以提高代码的可读性,加速其他人理解源代码的…

    编程 2025-04-23
  • MySQLMOD——一个功能强大的MySQL数据库模板库

    MySQLMOD是一个开源的、功能强大的MySQL数据库模板库,可以让开发人员更加轻松地操作MySQL数据库,并大大提高开发效率。MySQLMOD基于C++开发,具有高效、安全、稳…

    编程 2025-04-23
  • Idea模板注释解析

    一、基础概念 Idea是一款功能非常强大的集成开发环境,它支持众多的编程语言,拓展性强,用户群庞大。在Idea中,注释是一种程序员为了更好的阅读和维护自己的代码而添加的解释性文档。…

    编程 2025-04-23

发表回复

登录后才能评论