Toujours pour la même appli que mon poste précédant, j’utiliser Java et Com (via le projet Jacob) pour commander Excel.
J’ai réussi à faire quelque chose d’à peux prêt élégant (et je continue à le nettoyer) mais je suis tomber sur un problème assez lourd : les processus Excel reste en vie après la fin de l’éxecution. B)
En résumé voici ce que je fait :
[codebox]
public class WorkbookCodeReader {
private Application application;
private Workbook workbook;
private String workbookName;
private VBProject vbProject;
private VBComponents vbComponents;
public WorkbookCodeReader(String fileName)
{
this.workbookName = fileName;
}
public void open() throws ExcelOpenException
{
try {
this.application = new Application();
this.workbook = application.getWorkbooks().open(workbookName);
this.vbProject = workbook.getVBProject();
this.vbComponents = vbProject.getVBComponents();
} catch(ComException e) {
throw new ExcelOpenException(e);
}
}
public void close()
{
if(workbook != null)
workbook.close();
application.quit();
application = null;
workbook = null;
vbProject = null;
vbComponents = null;
}
}
[/codebox]
Y a-t-il quelque chose à faire pour ‘killer’ les objets COM ?