【问题标题】:How to saveas Excel File using Jacob (Java)如何使用 Jacob (Java) 另存为 Excel 文件
【发布时间】:2011-09-12 13:58:14
【问题描述】:

我正在尝试另存为 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

谁能告诉我代码的问题在哪里?谢谢

【问题讨论】:

    标签: java excel jacob


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

      【解决方案2】:

      是的,你是对的,它确实适用于“Saveas”。实际上“FileSaveAs”适用于word文档,所以我想用Excel和Powerpoint尝试一下,但它确实有效......

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

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

      【讨论】:

        【解决方案3】:

        如错误所述,它无法找到方法“FileSaveAs”。我试图在 Google/Documentation 中查找它并找不到它(也许它存在但我找不到它)。我找到了 SaveAs。所以尝试使用它,看看会发生什么。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-14
          • 2012-10-12
          • 1970-01-01
          相关资源
          最近更新 更多