//创建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;
}
}
jacob读写excel
最新推荐文章于 2019-04-22 16:08:22 发布