jacob读写excel



//创建excel并写入保存,再打印
public class ExcelTest {
private static ActiveXComponent xl;
private static Object workbooks = null;
private static Object workbook = null;
private static Object sheet = null;
private static String filename = null;
private static boolean readonly = false;

public static void main(String[] args) {
Date now = new Date();
Long nowtime = now.getTime();
//excel目录需要预先创建
String path = "c:\\excel\\"+nowtime+".xls";
createAndSave(path);
printExcel(path);
}

// 读取值
private static String GetValue(String position) {
Object cell = Dispatch.invoke((Dispatch) sheet, "Range", Dispatch.Get,
new Object[] { position }, new int[1]).toDispatch();
String value = Dispatch.get((Dispatch) cell, "Value").toString();

return value;
}

private static void createAndSave(String path){
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
Object xlo = xl.getObject();
try {
System.out.println("version=" + xl.getProperty("Version"));
System.out.println("version="
+ Dispatch.get((Dispatch) xlo, "Version"));
xl.setProperty("Visible", new Variant(true));
Object workbooks = xl.getProperty("Workbooks").toDispatch();
Object workbook = Dispatch.get((Dispatch) workbooks, "Add")
.toDispatch();
Object sheet = Dispatch.get((Dispatch) workbook, "ActiveSheet")
.toDispatch();
Object a1 = Dispatch.invoke((Dispatch) sheet, "Range",
Dispatch.Get, new Object[] { "A1" }, new int[1])
.toDispatch();
Object a2 = Dispatch.invoke((Dispatch) sheet, "Range",
Dispatch.Get, new Object[] { "A2" }, new int[1])
.toDispatch();
Dispatch.put((Dispatch) a1, "Value", "123.456");
Dispatch.put((Dispatch) a2, "Formula", "=A1*2");
Dispatch.call((Dispatch) workbook, "SaveAs", path);

System.out.println("a1 from excel:"
+ Dispatch.get((Dispatch) a1, "Value"));
System.out.println("a2 from excel:"
+ Dispatch.get((Dispatch) a2, "Value"));
// Variant f = new Variant(false);
// Dispatch.call((Dispatch) workbooks, "Close", f);
// Dispatch.call((Dispatch) workbook, "Close");
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[] {});
}
}

private static boolean printExcel(String path){
ComThread.InitSTA();
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
try {
// System.out.println("version=" + xl.getProperty("Version"));
Dispatch.put(xl, "Visible", new Variant(false));
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
Dispatch excel = Dispatch.call(workbooks, "Open", path).toDispatch();
Dispatch.get(excel, "PrintOut");
System.out.println("printOver");
Dispatch.call(excel, "Close");
return true;
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[] {});
ComThread.Release();
}
return false;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值