¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.core.annotation.excel;import java.io.*; |
| | | |
| | | import com.jacob.activeX.ActiveXComponent; |
| | | import com.jacob.com.ComThread; |
| | | import com.jacob.com.Dispatch; |
| | | import com.jacob.com.Variant; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import com.itextpdf.text.Document; |
| | | import com.itextpdf.text.DocumentException; |
| | | import com.itextpdf.text.pdf.PdfWriter; |
| | | |
| | | |
| | | public class ExcelToPdfToolNewSev { |
| | | |
| | | /** |
| | | * 使ç¨jacobå®ç°excel转PDF |
| | | * |
| | | * @param inputFilePath 导å
¥Excelæä»¶è·¯å¾ |
| | | * @param outputFilePath 导åºPDFæä»¶è·¯å¾ |
| | | */ |
| | | public static void jacobExcelToPDF(String inputFilePath, String outputFilePath) { |
| | | ActiveXComponent ax = null; |
| | | Dispatch excel = null; |
| | | try { |
| | | ComThread.InitSTA(); |
| | | ax = new ActiveXComponent("Excel.Application"); |
| | | ax.setProperty("Visible", new Variant(false)); |
| | | // ç¦ç¨å® |
| | | ax.setProperty("AutomationSecurity", new Variant(3)); |
| | | Dispatch excels = ax.getProperty("Workbooks").toDispatch(); |
| | | Object[] obj = { |
| | | inputFilePath, |
| | | new Variant(false), |
| | | new Variant(false) |
| | | }; |
| | | excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch(); |
| | | Dispatch currentSheet = Dispatch.get(excel, |
| | | "ActiveSheet").toDispatch(); |
| | | // è·å页é¢è®¾ç½® |
| | | Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup") .toDispatch(); |
| | | Dispatch.put(pageSetup, "Orientation", new Variant(2)); |
| | | Dispatch.put(pageSetup, "FitToPagesTall", new Variant(0)); |
| | | Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1)); |
| | | // è·å页é¢è®¾ç½® |
| | | // Dispatch.put(pageSetup, "PaperSize", pageSize); |
| | | // å
å®¹ç¼©æ¾ |
| | | // Dispatch.put(pageSetup, "Zoom", new Variant(false)); |
| | | |
| | | // Dispatch Application = Dispatch.get(currentSheet, "Application") .toDispatch(); |
| | | // Dispatch.put(pageSetup, "PaperSize", pageSize); |
| | | // Dispatch.put(Application, "ActivePrinter", "Microsoft Print to PDF"); |
| | | // å
å®¹ç¼©æ¾ |
| | | // Dispatch.put(pageSetup, "Orientation", new Variant(2)); |
| | | // Dispatch.put(pageSetup, "Zoom", new Variant(false)); |
| | | // Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1)); |
| | | // Dispatch.put(pageSetup, "FitToPagesTall", new Variant(1)); |
| | | |
| | | // Dispatch.put(pageSetup, "PaperSize", new Variant(8)); // A3æ¯8ï¼A4æ¯9ï¼A5æ¯11çç |
| | | |
| | | // è½¬æ¢æ ¼å¼ |
| | | Object[] obj2 = { |
| | | // PDFæ ¼å¼çäº0 |
| | | new Variant(0), |
| | | outputFilePath, |
| | | // 0=æ åï¼çæçPDFå¾çä¸ä¼æ¨¡ç³ï¼ï¼1=æå°çæä»¶ |
| | | new Variant(0) |
| | | }; |
| | | Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, obj2, new int[1]); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw e; |
| | | } finally { |
| | | if (excel != null) { |
| | | Dispatch.call(excel, "Close", new Variant(false)); |
| | | } |
| | | if (ax != null) { |
| | | ax.invoke("Quit", new Variant[]{}); |
| | | ax = null; |
| | | } |
| | | ComThread.Release(); |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String inputExcelPath = "D:\\2.xlsx"; |
| | | String outputPdfPath = "D:\\22.pdf"; |
| | | |
| | | jacobExcelToPDF(inputExcelPath, outputPdfPath); |
| | | } |
| | | } |