Java Jacob 写Word

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

public class JacobWord {

	public static void main(String[] args) {

		// String sDir = "F:\\";
		// String sInputDoc = sDir + "file_in.doc";
		// String sOldText = "[label:import:1]";
		// String sNewText =
		// "I am some horribly long sentence, so long that [insert bullshit here]";
		boolean tVisible = false;
		boolean tSaveOnExit = false;

		// 获取Word操作对象
		ActiveXComponent oWord = new ActiveXComponent("Word.Application");

		// 打开Word程序
		oWord.setProperty("Visible", new Variant(tVisible));

		// 获得文档区
		Dispatch oDocuments = oWord.getProperty("Documents").toDispatch();

		// 打开指定的文档
		// Dispatch oDocument = Dispatch.call(oDocuments, "Open",
		// sInputDoc).toDispatch();

		// 新建文档
		Dispatch oDocument = Dispatch.call(oDocuments, "Add").toDispatch();

		// 获取当前文档
		Dispatch oSelection = oWord.getProperty("Selection").toDispatch();

		// 获取查找对象
		// Dispatch oFind = oWord.call(oSelection, "Find").toDispatch();

		// 查找替换
		// Dispatch.put(oFind, "Text", sOldText);
		// Dispatch.call(oFind, "Execute");
		// Dispatch.put(oSelection, "Text", sNewText);

		// 插入大标题
		Dispatch.put(oSelection, "Text", "大标题");
		Dispatch oFont = Dispatch.get(oSelection, "Font").toDispatch();
		Dispatch oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
		Dispatch.put(oFont, "Bold", "1");
		Dispatch.put(oFont, "Italic", "0");
		Dispatch.put(oFont, "Underline", "0");
		Dispatch.put(oFont, "Size", new Variant(18));
		Dispatch.put(oFont, "Name", new Variant("宋体"));
		Dispatch.put(oAlign, "Alignment", "1");

		// 插入小标题
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\n小标题\n");
		oFont = Dispatch.get(oSelection, "Font").toDispatch();
		oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
		Dispatch.put(oFont, "Bold", "1");
		Dispatch.put(oFont, "Italic", "0");
		Dispatch.put(oFont, "Underline", "0");
		Dispatch.put(oFont, "Size", new Variant(14));
		Dispatch.put(oAlign, "Alignment", "1");

		// 插入正文
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "(一)正文。");
		oFont = Dispatch.get(oSelection, "Font").toDispatch();
		oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
		Dispatch.put(oFont, "Bold", "1");
		Dispatch.put(oFont, "Italic", "0");
		Dispatch.put(oFont, "Underline", "0");
		Dispatch.put(oFont, "Size", new Variant(10));
		Dispatch.put(oAlign, "Alignment", "0");
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\n(二)正文。");
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\n(三)正文。\n");

		// 插入结尾
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\t\t\t\t\t\t\t\t\t\t1.结尾");
		oFont = Dispatch.get(oSelection, "Font").toDispatch();
		oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
		Dispatch.put(oFont, "Bold", "0");
		Dispatch.put(oFont, "Italic", "0");
		Dispatch.put(oFont, "Underline", "0");
		Dispatch.put(oFont, "Size", new Variant(8));
		Dispatch.put(oAlign, "Alignment", "0");
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\n\t\t\t\t\t\t\t\t\t\t2.结尾");
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "\n\t\t\t\t\t\t\t\t\t\t3.结尾\n");

		// 插入时间
		Dispatch.call(oSelection, "MoveDown");
		Dispatch.put(oSelection, "Text", "2014-09-26");
		oFont = Dispatch.get(oSelection, "Font").toDispatch();
		oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
		Dispatch.put(oFont, "Bold", "0");
		Dispatch.put(oFont, "Italic", "0");
		Dispatch.put(oFont, "Underline", "0");
		Dispatch.put(oFont, "Size", new Variant(8));
		Dispatch.put(oAlign, "Alignment", "2");

		// 保存并关闭
		Dispatch.call(oDocument, "SaveAs", new Variant("F://" + System.nanoTime() + ".doc"));
		Dispatch.call(oDocument, "Close", new Variant(tSaveOnExit));

		// 退出Word程序
		oWord.invoke("Quit", new Variant[0]);

		// // 插入图片
		// String sImgFile = sDir + "image.png";
		// Dispatch.call(oSelection, "MoveDown");
		// Dispatch oImage = Dispatch.get(oSelection,
		// "InLineShapes").toDispatch();
		// Dispatch.call(oImage, "AddPicture", sImgFile);
		//
		// // 插入超链接
		// String sHyperlink = "http://www.google.com";
		// Dispatch.put(oSelection, "Text", "Text for the link to Google");
		// Object oRange = Dispatch.call(oSelection, "Range");
		// Dispatch oLink = Dispatch.get(oDocument, "Hyperlinks").toDispatch();
		// Dispatch.call(oLink, "Add", oRange, sHyperlink);
	}

}

时间: 2024-10-10 00:15:03

Java Jacob 写Word的相关文章

主题:jacob操作word excel

项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:  一.了解Jacob 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的.这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献. 下载地址:http://sourceforge.net/project/showfiles.php?grou

[转载]Java动态填充word文档并上传到服务器

一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是局限于windows平台,往往许多JAVA程序运行于其他操作系统,在此不讨论该方案.二是POI. 但是它的excel处理还凑合, word模块还局限于读取word的文本内容,写word文件的功能就更弱:还有一个要命的地方,处理doc格式和处理docx格式的类几乎完全不同,要分开针对不同的格式写不同的

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑",如果是两个字那就是"巨坑"=>因为这个需求一开始并不是这样子的,且听我漫漫道来: 一开始客户与我们商量的是将office和PDF上传,将此类文件解析成html格式,在APP端调用内置server直接以html"播放" 经历一个月~,两个月~,三个月~~~

使用 Java 程序写文件时,记得要 flush()

使用 Java 程序往磁盘写文件时碰到了这样的问题:文件写不全. 假如内容(StringBuffer/StringBuilder)有 100W 个字符,但是通过 Java 程序写到文件里的却不到 100W ,部分字符不见了. 代码大致是这样的: 1 private void writeToDisk() throws Exception { 2 File file = new File("FILE_PATH"); 3 OutputStreamWriter osw = null; 4 os

Java 文件写操作

在进行文件写操作的时候,有两种操作方方式.一个是连续写,一个是覆盖式写. 代码如下: import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; // text:要写入的内容:isAppend:写入方式,true为连续写,false为覆盖式写入. public void write(String text

JAVA程序 写供别人调用的接口方法的时候 异常应该怎么处理?

要看出现的是哪种异常了.如果是使用某些定义好的函数,并且函数本身会产生异常处理方法一般两种:1.自己用try{}catch(){}语句捕获异常并处理.2.在定义接口的后面写上throw Exception.把异常抛出让使用接口的人处理异常.两种方法都可以.但如果是RuntimeException异常,那就是自己程序某些地方写错了,那你就必须找到并修改程序.JAVA程序 写供别人调用的接口方法的时候 异常应该怎么处理?,布布扣,bubuko.com

用Java来写常见的排序算法

随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * * @author huwei * */ public class Sort { public static void main(String[] args) { int[] a = { 60, 57, 89, 47, 57, 98, 45, 35, 73 }; Sort sort = new So

换一个视角看事务 - 用"Java语言"写"作文"

前段时间在抽工作之空余,更加系统和深入的重新学习Java的一些技术知识. 最近也试着申请了一个专栏,对前段时间的一些收获和知识点做一个系统性的归纳回顾和总结. 昨天也是刚刚写完了关于Java中的各种基础语言要素的总结,总觉得少了点什么. 对基础语言要素的理解和使用,实际上是很重要的. 俗话说,一切伟大的行动和思想,都源于一个微不足道的开始. 而对于一门语言来说,熟练的掌握对其基础语言要素的理解和使用,就是这个"微不足道的开始" 可以这样说,一门语言的基础语言要素,就等同于是一门武功的内

Java 后台创建word 文档

---恢复内容开始--- Java 后台创建 word 文档 自己总结  网上查阅的文档 分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6 方式一.(正常创建  适合短文本 无格式要求Word文档) 1 XWPFDocument doc = new XWPFDocument(); //创建word文件 2 XWPFParagraph p1 = doc.createParagraph(); //创建段落 3 XWPFRun r1 = p1.cre