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/zh-hant/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

發表回復

登錄後才能評論