0

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から取得されます。

コードのどこに問題があるのか​​誰か教えてもらえますか?ありがとう

4

3 に答える 3

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;
}
于 2015-08-28T15:37:41.297 に答える
0

はい、そうです、「Saveas」で動作します。実は「FileSaveAs」はワード文書で動作するので、エクセルやパワーポイントでやってみようと思ったのですがうまくいきませんでした...

Excel ワークブックとして保存するには、次のコードが機能します。

 Dispatch.call(workbook, "SaveAs", filename, new Variant(1)); 
于 2011-09-19T07:29:13.667 に答える
0

エラーで述べられているように、「FileSaveAs」メソッドが見つかりません。Google/Documentation で検索しようとしましたが、見つかりませんでした (存在する可能性がありますが、見つかりませんでした)。代わりに SaveAs を見つけました。だからそれを使ってみて、何が起こるか見てみましょう。

于 2011-09-12T16:49:39.577 に答える