public static void openExcel() {
try {
IDispatch excelApp = null;
IDispatch excel = (IDispatch) excelApp.get("Workbooks");// 得到工作薄 这句报错
excel.put("Visible", false); // 设置当前对象是否可见
File f = new File("C:\\out.xls");
if (f.exists()) {// 判断文件是否存在
IDispatch workbook = (IDispatch) excel.method("open",
new Object[] { "C:\\out.xls" }); // 打开工作薄
IDispatch Sheet = (IDispatch) workbook.get("ActiveSheet");
IDispatch OLEObjects = (IDispatch) Sheet.get("OLEObjects");
IDispatch OLEObject = (IDispatch) OLEObjects.method("add",
new Object[] { null, "C:\\aa.txt", false, false, null,
null, null, 100, 100, 500, 500 });
}
} catch (JComException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
求高手解决。请问该怎么在java里调用vba,而且让Vba打开指定的Excel ,并给excel里添加一个txt的文本对象。在线等。
苦等高手解决

解决方案 »

  1.   

    你的excelApp是NULL,所以你需要先创建这个对象:
    IDispatch excelApp = null;
    ReleaseManager rm = new ReleaseManager();
    excelApp = new IDispatch(rm, "Excel.Application");
      

  2.   



    excelApp = new IDispatch(rm, "Excel.Application");这句是新开一个Excel的进程。那么要怎么关闭这个进程呢··?用java关闭。谢谢。在线等
      

  3.   

    public static void openExcel() {
    try {
    IDispatch excelApp = new IDispatch(rm, "Excel.Application");
    IDispatch excel = (IDispatch) excelApp.get("Workbooks");// 得到工作薄
    excelApp.put("Visible", new java.lang.Boolean(false)); // 设置当前对象是否可见
    File f = new File("C:\\out.xls");
    if (f.exists()) {// 判断文件是否存在
    IDispatch workbook = (IDispatch) excel.method("Open",
    new Object[] { "C:\\out.xls" }); // 打开工作薄
    workbook.method("close", new Object[] { "C:\\out.xls" });
    excelApp.method("quit", new Object[] {});
    excelApp = null;
    }
    } catch (JComException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public static boolean deleteFile(String fileName) {
    File file = new File(fileName);
    // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
    if (file.exists() && file.isFile()) {
    if (file.delete()) {
    System.out.println("删除单个文件" + fileName + "成功!");
    return true;
    } else {
    System.out.println("删除单个文件" + fileName + "失败!");
    return false;
    }
    } else {
    System.out.println("删除单个文件失败:" + fileName + "不存在!");
    return false;
    }
    }结果:删除单个文件C:\out.xls失败!
    为什么总是删不掉呢·?急.....
      

  4.   

    怎么在java里调用vba?这你解决了吗?求教