Excel赋值并转pdf用jacob

本文记录在Windows系统下,利用Jacob工具对Excel赋值并转换为PDF的过程。因Excel较复杂,直接绘制PDF有困难,故采用操作Excel转PDF的方式,代码参考网上案例。操作需电脑装有Office。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下自己windows下excel赋值并转pdf
工具:jacob,电脑装有office

我是这样使用的,下载地址百度一堆的。

 <dependency>
      <groupId>com.jacob</groupId>
      <artifactId>jacob</artifactId>
      <version>1.19</version>
      <scope>system</scope>
      <systemPath>D:/jacob/jacob-1.19/jacob.jar</systemPath>
  </dependency>

由于我的excel比较复杂,直接绘制pdf有点难,好像也不可能,所以只能操作excel转pdf,废话不多说直接上代码

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

public class Demo {
	private static ActiveXComponent xl;
	private static Dispatch workbooks = null;
	private static Dispatch workbook = null;
	private static Dispatch sheet = null;
	private static String filename =null;
	private static boolean readonly = false;
	
	//打开Excel文档
	private static void OpenExcel(String file,boolean f){
		try {
			filename = file;
			xl = new ActiveXComponent("Excel.Application");
			xl.setProperty("Visible", new Variant(f));
			workbooks = xl.getProperty("Workbooks").toDispatch();
			workbook = Dispatch.invoke(workbooks, 
										"Open", 
										Dispatch.Method,
										new Object[]{filename, 
										new Variant(false),
										new Variant(readonly)},
										new int[1] ).toDispatch();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//关闭Excel文档
	private static void CloseExcel(boolean f){
		try {
			 Dispatch.call(workbook,"Save");
			 Dispatch.call(workbook, "Close", new Variant(f));
		} catch (Exception e) {
			 e.printStackTrace();
		}finally {
			xl.invoke("Quit", new Variant[] {});
		}
	}
	//写入值
	private static void SetValue(String position,String type,String value){
		sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch(); 
		Dispatch cell = Dispatch.invoke(sheet, "Range", Dispatch.Get,new Object[] {position},new int[1]).toDispatch();
		Dispatch.put(cell, type, value);
	}
//	//读取值 
//	private static String GetValue(String position){
//		Dispatch cell = Dispatch.invoke(sheet,"Range",Dispatch.Get,new Object[] {position},new int[1]).toDispatch();
//		String value = Dispatch.get(cell,"Value").toString();
//		return value;
//	}
	//另存为
	private static void saveAs(String file){
		//转换格式
		Dispatch.invoke(workbook,"ExportAsFixedFormat",Dispatch.Method,new Object[]{
			new Variant(0), //PDF格式=0
			file,
			new Variant(0)  //0=标准 (生成的PDF图片不会变模糊) 1=最小文件 (生成的PDF图片糊的一塌糊涂)
		},new int[1]);//另存为
	}
	
	
	public static void main(String[] args) {
		 String quondamPath = "D:\\测试文件夹\\111.xlsx";
		 String saveAsPath = "D:\\测试文件夹\\222.pdf";
		 OpenExcel(quondamPath,false);  //false为不显示打开Excel
		 SetValue("B6","Value","1200");//单元格赋值
		 //System.out.println(GetValue("A3"));//获取单元格内容
		 saveAs(saveAsPath);
		 CloseExcel(false);
	}
}

这样就可以了。代码都是参考网上案例的,看的太多不知道是那个了就不放了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值