jacob学习一:向word中添加一个字符串

最近发现许多操作都是需要调用windows的COM组件,虽然java有JNI,但是似乎并不好用,后来发现有个jacob,底层虽然也是使用JNI,但是直接使用jacob,好了很多,,下面是一个简单的demo;

主要实现打开一个临时word,填写一个字符串。

/*******************************************************************************
 * @project: jacobTest
 * @package: com.jacob.burns
 * @file: JacobTest2.java
 * @author: Administrator
 * @created: 2017-9-8
 * @purpose:
 * 
 * @version: 1.0
 * 
 * Revision History at the end of file.
 * 
 * Copyright 2017 AcconSys All rights reserved.
 ******************************************************************************/

package com.jacob.burns;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class JacobTest2 {

	public static void main(String[] args) {
		ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法
		// 2. 初始化word应用程序,新建一个空白文档,取得文档内容对象//Instantiate objWord //Declare word
		// object
		ActiveXComponent objWord = new ActiveXComponent("Word.Application");
		// Assign a local word object
		Dispatch wordObject = (Dispatch) objWord.getObject();
		// Create a Dispatch Parameter to show the document that is opened
		Dispatch.put((Dispatch) wordObject, "Visible", new Variant(true));// new
																			// Variant(true)表示word应用程序可见
		// Tip:设置一个对象的属性的时候,利用Dispatch的put方法,给属性赋值。上面这行语句相当于vb的
		// wordObject.Visible = true 语句
		// Instantiate the Documents Property
		Dispatch documents = objWord.getProperty("Documents").toDispatch(); // documents表示word的所有文档窗口,(word是多文档应用程序)
		// Add a new word document, Current Active Document
		Dispatch document = Dispatch.call(documents, "Add").toDispatch(); // 使用Add命令创建一个新文档,用Open命令可以打开一个现有文档
		// Tip:调用一个对象的方法的时候,利用Dispatch的call方法,上面的语句相当于vb的document =
		// documents.Add() 语句。
		Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的内容
		// Tip:取得一个对象的成员变量(属性)时利用Dispatch的get方法,上面的语句相当于vb的wordContent =
		// document.Content语句
		// 3. 取得word文档的内容后,可以对其内容进行操作
		Dispatch.call(wordContent, "InsertAfter", "这里是一个段落的内容");// 插入一个段落
		// 4. 设置刚插入的段落的文字格式
		Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs")
				.toDispatch(); // 所有段落
		int paragraphCount = Dispatch.get(paragraphs, "Count").toInt(); // 一共的段落数
		// 找到刚输入的段落,设置格式
		Dispatch lastParagraph = Dispatch.call(paragraphs, "Item",
				new Variant(paragraphCount)).toDispatch(); // 最后一段
		Dispatch lastParagraphRange = Dispatch.get(lastParagraph, "Range")
				.toDispatch();
		Dispatch font = Dispatch.get(lastParagraphRange, "Font").toDispatch();
		Dispatch.put(font, "Bold", new Variant(true)); // 设置为黑体
		Dispatch.put(font, "Italic", new Variant(true)); // 设置为斜体
		Dispatch.put(font, "Name", new Variant("宋体")); //
		Dispatch.put(font, "Size", new Variant(12)); // 小四
	}
}

/*******************************************************************************
 * <B>Revision History</B><BR>
 * [type 'revision' and press Alt + / to insert revision block]<BR>
 * 
 * 
 * 
 * Copyright 2017 AcconSys All rights reserved.
 ******************************************************************************/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,我并不是一个可以浏览文档的程序,也没有能力打开网页查找相关信息。但是,我可以告诉你如何使用Java将多个Word文档合并为一个Word文档。 可以使用Apache POI库来操作Word文档。以下是将多个Word文档合并为一个Word文档的示例代码: ``` import java.io.*; import org.apache.poi.xwpf.usermodel.*; public class MergeWordDocuments { public static void main(String[] args) throws Exception { String[] files = {"doc1.docx", "doc2.docx", "doc3.docx"}; XWPFDocument finalDoc = new XWPFDocument(); for (String file : files) { XWPFDocument doc = new XWPFDocument(new FileInputStream(file)); for (XWPFParagraph para : doc.getParagraphs()) { XWPFParagraph newPara = finalDoc.createParagraph(); newPara.createRun().setText(para.getText()); } for (XWPFTable tbl : doc.getTables()) { XWPFTable newTbl = finalDoc.createTable(); newTbl.getCTTbl().setTblPr(tbl.getCTTbl().getTblPr()); for (int i = 0; i < tbl.getRows().size(); i++) { XWPFTableRow row = newTbl.getRow(i); if (row == null) row = newTbl.createRow(); for (int j = 0; j < tbl.getRow(i).getTableCells().size(); j++) { XWPFTableCell cell = row.getCell(j); if (cell == null) cell = row.createCell(); cell.getCTTc().setTcPr(tbl.getRow(i).getCell(j).getCTTc().getTcPr()); for (XWPFParagraph para : tbl.getRow(i).getCell(j).getParagraphs()) { XWPFParagraph newPara = cell.addParagraph(); newPara.createRun().setText(para.getText()); } } } } } FileOutputStream out = new FileOutputStream("finalDoc.docx"); finalDoc.write(out); out.close(); finalDoc.close(); } } ``` 上述代码将会把 `doc1.docx`,`doc2.docx` 和 `doc3.docx` 合并为 `finalDoc.docx` 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱的叹息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值