通过java代码实现调用excel当中的宏的操作。

最近做的项目是自动化生成基金的交易合同的操作。然后就想着通过java代码去操作Excel当中的宏按钮,然后生成word版本的合同的操作。

具体的java代码如下:

import org.junit.Assert;
import org.junit.Test;

public class ExcelToolsServiceTest {

    private ExcelToolsService service;

    @Test
    public void testMacro() {
        try {
            String path = "C:/Users/admin.admin-PC.000/Desktop/vb/合并的模板/合同模板.xlsm";
            service = new ExcelToolsService();
            service.execMacro(path, "文本替换.生成文档");
        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail();
        }
    }

}

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


public class ExcelToolsService {


public void execMacro(String excelPath, String macroName, Variant... params) throws Exception {

ActiveXComponent excel = null;
Dispatch workbooks = null;
Dispatch workbook = null;
long start = System.currentTimeMillis();
System.out.println(start);

try {
ComThread.InitSTA();


excel = new ActiveXComponent("Excel.Application");
workbooks = excel.getProperty("Workbooks").toDispatch();
workbook = Dispatch.call(workbooks, "Open", excelPath).toDispatch();
if (null == params || params.length < 1) {
Dispatch.call(excel, "Run", new Variant(macroName));
} else {
Dispatch.call(excel, "Run", new Variant(macroName), params);
}
Dispatch.call(workbook, "Save");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != workbook) {// 关闭文档
Dispatch.call(workbook, "Close", new Variant(false));
}
if (null != workbooks) {
Dispatch.call(workbooks, "Close");
}
if (null != excel) {
excel.invoke("Quit", new Variant[] {});
}


// 关闭Excel进程
ComThread.Release();


long end = System.currentTimeMillis();
System.out.println("处理文件[{}]宏[{}],共耗时{}s" + excelPath + macroName
+ ((end - start) / 1000 + 1));
}
}


}

 

至此实现了通过Excel的宏自动化的生成基金的合同的操作。

原文地址:https://www.cnblogs.com/gxgd/p/9306314.html

时间: 2024-08-29 20:12:14

通过java代码实现调用excel当中的宏的操作。的相关文章

如何在java代码中调用一个web项目jsp或者servlet

有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个servlet中,只需要执行如下代码: URL url = new URL("http://192.168.2.123:8080/sace/ClearCache"); url.openStream(); openStream() 执行一次相当于一次URL请求,其中url.openStream(

如何使用网页开发自己的app,在网页中的按钮与自己的java代码绑定来实现打电话即javascript代码调用java代码,和java代码来调用javascript代码

1首先是如何在自己的app里用网页显示,这样可以较快的更新界面而不需要让客户端升级,方法如下: xml文件: <WebView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/web_v" /> 2在activity里绑定网页: public class MainActivity extends Action

IKVM:java代码c#调用

在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: 第一步:简单java代码 package com.zht;//c#命名空间 public class Testaaa { public String returnString() { return "Hello, zht!"; } } 第二步:java代码编译为class文件 1:在开始菜

vb调用excel方法详解及操作相关操作命令大全

如果你要在VB中要想调用Excel,需要打开VB编程环境"工程"菜单中的"引用"项目,并选取项目中的"Microsoft Excel 11.0 object library"项.由于你的Excel版本不同,所以这个选项的版本号也是不同的. 因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素.    第一层:Application对象,即Excel本身:    第二层:workbooks对象集,指Excel的工作簿文件: 第三

java代码实现对excel加密、解密(设置或去除打开密码)

使用jxcell组件来完成对excel加密.解密的功能. jxcell.jar[点击下载](此jar没有使用限制,你懂得) 具体代码如下: import java.io.IOException; import com.jxcell.CellException; import com.jxcell.View; /** * excel加密.解密 代码 * * @author lifq * @date 2015-3-13 下午02:13:24 */ public class EncryptDecryp

java代码实现导出Excel表格、工具ssm框架、maven、idea

第一步.导入依赖 <!--生成excel文件--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId&g

在JSP中的java代码中调用js代码

out.println(str)方法就是在JSP服务端运行的时候把str输出到服务端返回给客户端的HTML页面 可以通过out.print()这种方式输出一段JS代码,这段JS代码先声明一个JS函数,声明结束后再调用一下这个方法. 例如: out.println("<script>function showMessage() {alert('set_afterlogin()');}</script>");//声明showMessage方法 out.println

xml中定义个TextView控件及java代码中调用方法。

<TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="@string/hello_world"         android:id="@+id/myTextView" /> TextView myTextView = (Text

怎样在java代码中调用执行shell脚本

// 用法:Runtime.getRuntime().exec("命令"); String shpath="/test/test.sh"; //程序路径 Process process =null; String command1 = “chmod 777 ” + shpath; try { Runtime.getRuntime().exec(command1 ).waitFor(); } catch (IOException e1) { e1.printStack