2011-09-12 44 views
0

Excelを保存しようとしていますが、エラーが発生します。名前をdispidにマップできません:FileSaveAs。問題はコードである場合誰が私を伝えることができhttp://msdn.microsoft.com/en-us/library/bb241279(v=office.12).aspxJacob(Java)を使用してExcelファイルを保存する方法

:バリアントの

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

パラメータはから取られますか?ありがとう

答えて

0

エラーで説明したように、メソッド "FileSaveAs"を見つけることができません。私はGoogle/Documentationで検索しようとしましたが見つかりませんでした(存在するかもしれませんが、見つけられませんでした)。代わりにSaveAsが見つかりました。だから、それを使って何が起こるかを見てみてください。

0

はい、あなたは正しいです、それは "Saveas"で動作します。実は「FileSaveAs」Word文書で動作するので、私は名前を付けて保存に

...エクセルやパワーポイントでそれをしようと思ったが、それは働いたDINTワークブックをエクセル、このコードは動作します:

Dispatch.call(workbook, "SaveAs", filename, new Variant(1)); 
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; 
} 
関連する問題