利用jacob将Excel转换为PDF时,Excel中的列在PDF中显示不全如下图,加班费合计右面应该还有列,但是没有显示。另外,各列的数据数据显示不全,如身份证号
下面是我的代码
public boolean excelTopdf(String inputFile, String pdfFile){
ComThread.InitSTA();
ActiveXComponent app = new ActiveXComponent("Excel.Application");
app.setProperty("Visible", new Variant(false));
Object excels = app.getProperty("Workbooks").toDispatch();
Object excel = Dispatch.invoke(
(Dispatch) excels,
"Open",
Dispatch.Method,
new Object[] { inputFile, new Variant(false),
new Variant(true) }, new int[9]).toDispatch();
Dispatch currentSheet = Dispatch.get((Dispatch) excel,
"ActiveSheet").toDispatch();
Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup")
.toDispatch();
Dispatch.put(pageSetup, "Orientation", new Variant(2));
Dispatch.call(currentSheet, "SaveAs", pdfFile,
new Variant(57));
if (app != null) {
app.invoke("Quit", new Variant[] {});
app = null;
}
ComThread.Release();
return true;
}
加上如下代码:
Dispatch.put(pageSetup, "Zoom", false); // 值为100或false
Dispatch.put(pageSetup, "FitToPagesWide", 1); // 所有列为一页(1或false)
楼主可以试下Spire.XLS for Java控件来实现Excel转PDF,转换效果不错。如果excel含有多个sheet的话,它既支持转换整个文档为PDF,也能转换指定某个sheet为PDF。参考代码如下:
将整个工作簿转为PDF
```java
import com.spire.xls.*;
public class ExcelToPDF {
public static void main(String[] args) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//调用方法保存为PDF格式
wb.saveToFile("ToPDF.pdf",FileFormat.PDF);
}
}
将指定工作表转为PDF
```java
import com.spire.xls.*;
public class ExcelToPDF {
public static void main(String[] args) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//获取第2个工作表
Worksheet sheet = wb.getWorksheets().get(1);
//调用方法保存为PDF格式
sheet.saveToPdf("ToPDF2.pdf");
}
}
spire.xls for java产品包下载链接:https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html