2011-09-12 4 views
0

J'essaie de sauver le fichier Excel, mais il donne une erreur: Impossible de mapper le nom pour dispid: FileSaveAs.Comment sauvegarder le fichier Excel en utilisant Jacob (Java)

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

Le paramètre de la variante est la prise de: http://msdn.microsoft.com/en-us/library/bb241279(v=office.12).aspx

Quelqu'un peut-il me dire où est le problème dans le code? Merci

Répondre

0

Comme indiqué par l'erreur, il n'est pas capable de trouver la méthode "FileSaveAs". J'ai essayé de le chercher dans Google/Documentation et je n'ai pas pu le trouver (peut-être existe-t-il mais je n'ai pas pu le trouver). J'ai trouvé SaveAs à la place. Alors essayez d'utiliser cela et voir ce qui se passe.

0

Oui, vous avez raison, cela fonctionne avec "Saveas". En fait, "FileSaveAs" fonctionne avec le document de mot, donc je pense essayer avec Excel et Powerpoint, mais force travaillé ...

Pour saveas classeur Excel, ce code fonctionne:

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

Je suis pas sûr si j'utilise la bonne façon de le faire, mais cela fonctionne

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