java - 如何使用 Jacob (Java) 将其另存为 Excel 文件

标签 java excel jacob

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

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

最佳答案

我不确定我是否使用了正确的方法来做到这一点,但它有效

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

关于java - 如何使用 Jacob (Java) 将其另存为 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389074/

相关文章:

java - 计数的字节数和总字节数不同

excel从单元格中提取每个单词并存储到单独的列中

vba - 如何格式化 [h] :mm excel format using format() function in VBA 中的时间

java - 如何使用 JACOB 创建对象

Java 和 Autoit 无法发送 TAB、ENTER 等按键?

java - Android SpeechToText STT 对话框

java - 如何关闭 YIntervalRenderer 中的形状?

java - 在多个 ejb 之间共享 env-entry

Excel工作表计算值的最大值