记录一下自己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);
}
}
这样就可以了。代码都是参考网上案例的,看的太多不知道是那个了就不放了。