java jacob 操作word 文档,进行写操作,如生成表格,添加 图片

本文介绍如何利用Java的Jacob库对Word文档进行写操作,包括创建表格和插入图片。首先,需要将jacob-1.15-M3-x86.dll文件放入系统目录c:\windows\system32,并引入jacob.jar。接着,通过示例代码演示具体的实现步骤。
摘要由CSDN通过智能技术生成


jacob-1.15-M3.zip 

jacob-1.15-M3-x86.dll copy 到c:\\windows\system32

引入jacob.jar

示例代码

 

 

import java.io.File;  
importcom.jacob.activeX.ActiveXComponent;  
import com.jacob.com.Dispatch;  
import com.jacob.com.Variant;  
class WordBean {  
   // 代表一个word 程序  
   private ActiveXComponent MsWordApp = null;  
   // 代表进行处理的word 文档  
   private Dispatch document = null;  
   public WordBean() {  
       // Open Word if we\'ve not done it already  
       if (MsWordApp == null) {  
           MsWordApp = new ActiveXComponent("Word.Application");  
       }  
   }  
   // 设置是否在前台打开 word程序 ,  
   public void setVisible(boolean visible) {  
       MsWordApp.setProperty("Visible", new Variant(visible));  
       // 这一句作用相同  
       // Dispatch.put(MsWordApp, "Visible", newVariant(visible));  
   }  
   // 创建一个新文档  
   public void createNewDocument() {  
       // Find the Documents collection object maintained by Word  
       // documents表示word的所有文档窗口,(word是多文档应用程序)  
       Dispatch documents = Dispatch.get(MsWordApp,"Documents").toDispatch();  
       // Call the Add method of the Documents collection to create  
       // a new document to edit  
       document = Dispatch.call(documents, "Add").toDispatch();  
   }  
   // 打开一个存在的word文档,并用document 引用 引用它  
   public void openFile(String wordFilePath) {  
       // Find the Documents collection object maintained by Word  
       // documents表示word的所有文档窗口,(word是多文档应用程序)  
       Dispatch documents = Dispatch.get(MsWordApp,"Documents").toDispatch();  
       document = Dispatch.call(documents, "Open", wordFilePath,  
                new Variant(true)/* 是否进行转换ConfirmConversions */,  
                new Variant(false)/* 是否只读 */).toDispatch();  
       // document = Dispatch.invoke(documents, "Open",Dispatch.Method,  
       // new Object[] { wordFilePath, new Variant(true),  
       // new Variant(false)  
       // }, new int[1]).toDispatch();  
    }  
   // 向 document 中插入文本内容  
   public void insertText(String textToInsert) {  
       // Get the current selection within Word at the moment.  
       // a new document has just been created then this will be at  
       // the top of the new doc 获得选 中的内容,如果是一个新创建的文件,因里面无内容,则光标应处于文件开头处  
       Dispatch selection = Dispatch.get(MsWordApp,"Selection").toDispatch();  
       // 取消选中,应该就是移动光标 ,否则 新添加的内容会覆盖选中的内容  
       Dispatch.call(selection, "MoveRight", new Variant(1), newVariant(1));  
       // Put the specified text at the insertion point  
       Dispatch.put(selection, "Text", textToInsert);  
       // 取消选中,应该就是移动光标  
       Dispatch.call(selection, "MoveRight", new Variant(1), newVariant(1));  
   }  
   // 向文档中添加 一个图片,  
   public void insertJpeg(String jpegFilePath) {  
       Dispatch selection = Dispatch.get(MsWordApp,"Selection").toDispatch();  
       Dispatch image = Dispatch.get(selection,"InLineShapes").toDispatch();  
       Dispatch.call(image, "AddPicture", jpegFilePath);  
   }  
   // 段落的处理,插入格式化的文本  
   public void insertFormatStr(String text) {  
       Dispatch wordContent = Dispatch.get(document,"Content").toDispatch(); // 取得word文件的内容  
       Dispatch.call(wordContent, "InsertAfter", text);// 插入一个段落到最后  
       Dispatch paragraphs = Dispatch.get(wordContent,"Paragraphs")  
                .toDispatch(); // 所有段落  
       int paragraphCount = Dispatch.get(paragraphs,"Count").changeType(  
                Variant.VariantInt).getInt();//一共的段落数  
       // 找到刚输入的段落,设置格式  
       Dispatch lastParagraph = Dispatch.call(paragraphs,"Item",  
                newVariant(paragraphCount)).toDispatch(); // 最后一段(也就是刚插入的)  
       // Range 对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义  
       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)); // 小四  
       Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch();  
       Dispatch.call(selection, "TypeParagraph");// 插入一个空行  
       Dispatch alignment = Dispatch.get(selection,"ParagraphFormat")  
                .toDispatch();// 段落格式  
       Dispatch.put(alignment, "Alignment", "2"); // (1:置中 2:靠右 3:靠左)  
   }  
   // word 中在对表格进行遍历的时候 ,是先列后行 先column 后cell  
   // 另外下标从1开始  
   public void insertTable(String tableTitle, int row, int column) {  
       Dispatch selection = Dispatch.get(MsWordApp,"Selection").toDispatch(); // 输入内容需要的对象  
       Dispatch.call(selection, "TypeText", tableTitle); // 写入标题内容 // 标题格行  
       Dispatch.call(selection, "TypeParagraph"); // 空一行段落  
       Dispatch.call(selection, "TypeParagraph"); // 空一行段落  
       Dispatch.call(selection, "MoveDown"); // 游标往下一行  
       // 建立表格  
       Dispatch tables = Dispatch.get(document,"Tables").toDispatch();  
       // int count = Dispatch.get(tables,  
       // "Count").changeType(Variant.VariantInt).getInt(); //document中的表格数量  
       // Dispatch table = Dispatch.call(tables, "Item", newVariant(  
       // 1)).toDispatch();//文档中第一个表格  
       Dispatch range = Dispatch.get(selection,"Range").toDispatch();// /当前光标位置或者选中的区域  
       Dispatch newTable = Dispatch.call(tables, "Add", range,  
                new Variant(row), newVariant(column), new Variant(1))  
                .toDispatch(); // 设置row,column,表格外框宽度  
       Dispatch cols = Dispatch.get(newTable,"Columns").toDispatch(); // 此表的所有列,  
       int colCount = Dispatch.get(cols, "Count").changeType(  
                Variant.VariantInt).getInt();//一共有多少列 实际上这个数==column  
       System.out.println(colCount + "列");  
       for (int i = 1; i <= colCount; i++) { // 循环取出每一列  
           Dispatch col = Dispatch.call(cols, "Item", newVariant(i))  
                    .toDispatch();  
           Dispatch cells = Dispatch.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值