Excel赋值并转pdf用jacob

    xiaoxiao2023-10-12  151

    记录一下自己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); } }

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

    最新回复(0)