有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Jacob(Java)保存为Excel文件

我试图另存为excel文件,但它给出了一个错误:无法将名称映射到dispid:FileSaveAs

private ActiveXComponent objExcel = new ActiveXComponent("Excel.Application");
excelObject = objExcel.getObject();
Dispatch.put(excelObject, "Visible", new Variant(false));
workbook = objExcel.getProperty("Workbooks").toDispatch();
workbook = Dispatch.call(workbook, "Open", filename).toDispatch();
Dispatch oExcel = Dispatch.call(objExcel, "Workbooks").getDispatch();
Dispatch.call(workbook, "FileSaveAs", filename, new Variant(51));

变量的参数取自:http://msdn.microsoft.com/en-us/library/bb241279(v=office.12).aspx

有人能告诉我代码中的问题在哪里吗?谢谢


共 (3) 个答案

  1. # 1 楼答案

    正如错误所述,它无法找到“FileSaveAs”方法。我试图在Google/文档中查找它,但找不到(可能它存在,但我找不到)。我找到了SaveAs。所以试着使用它,看看会发生什么

  2. # 2 楼答案

    我不确定我是否使用了正确的方法,但它是有效的

    public Boolean savesAS(String path, String nameFile){
    
        ComThread.InitSTA();
    
        ActiveXComponent excel = new ActiveXComponent("Excel.Application");
        excel.setProperty("Visible", new Variant(true));
        Object workbooks = excel.getProperty("Workbooks").toDispatch();
        Object workbook;
    
        try {            
            workbook = Dispatch.call((Dispatch)workbooks, "Open", path).toDispatch();           
        } catch (Exception e) {
            showMessageDialog(null,"Unable to open " + path);
            return false;
        }
    
        try {
            //here you can modify the value of "new Variant(int)" with other number
            Dispatch.call((Dispatch)workbook, "SaveAs", nameFile ,new Variant(2)); 
        } catch (Exception e) {
             showMessageDialog(null,"Unable to convert " + path);
            return false;
        }
    
        Dispatch.call((Dispatch)workbook, "Close", new Variant(false));
    
        excel.invoke("Quit", new Variant[0]);
        excel.safeRelease();
        ComThread.Release();
    
        return true;
    }
    
  3. # 3 楼答案

    是的,你是对的,它确实适用于“Saveas”。实际上,“FileSaveAs”可以和word文档一起使用,所以我想用Excel和Powerpoint试试,但效果不佳

    要另存为excel工作簿,以下代码有效:

     Dispatch.call(workbook, "SaveAs", filename, new Variant(1));