首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Jacob将Excel文件另存为(Java)

如何使用Jacob将Excel文件另存为(Java)
EN

Stack Overflow用户
提问于 2011-09-12 21:58:15
回答 3查看 4K关注 0票数 0

我正在尝试另存为excel文件,但它给出一个错误:无法将名称映射到调度I: FileSaveAs。

代码语言:javascript
复制
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

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

EN

回答 3

Stack Overflow用户

发布于 2015-08-28 23:37:41

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

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2011-09-13 00:49:40

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

票数 0
EN

Stack Overflow用户

发布于 2011-09-19 15:29:14

是的,你是对的,它确实适用于"Saveas“。实际上"FileSaveAs“适用于word文档,所以我想尝试它与Excel和Powerpoint,但它不起作用…

要将excel工作簿另存为,请执行以下代码:

代码语言:javascript
复制
 Dispatch.call(workbook, "SaveAs", filename, new Variant(1)); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7389074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档