Comment utiliser Microsoft.Office.Interop.Excel sur une machine sans MS Office installé ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment utiliser Microsoft.Office.Interop.Excel sur une machine sans MS Office installé ?

Message par ForumBot »

Je développe une application qui travaille avec des fichiers Excel.

J’ai besoin d’une fonctionnalité pour supprimer une feuille.

Je dois utiliser l’assembly Microsoft.Office.Interop.Excel.dll.


Cela fonctionne parfaitement sur la machine de développement, mais lorsque j’essaie de la déployer sur le serveur, j’obtiens une erreur :



Could not load file or assembly ‘office, Version=14.0.0.0,

Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its

dependencies


Je comprends que le problème survient lorsque MS Office n’est pas installé sur la machine.

Le client ne veut en aucun cas installer et acheter MS Office sur un serveur.


J’ai installé les « Redistributable Primary Interop Assemblies » sur la machine de développement comme conseillé ici : http://forums.asp.net/t/1530230.aspx/1

et j’ai recompilé mon projet.


Exemple de code :


public bool DeleteSheet(string tableName)
{
Excel.Application app = null;
Excel.Workbooks wbks = null;
Excel._Workbook _wbk = null;
Excel.Sheets shs = null;

bool found = false;

try
{
app = new Excel.Application();
app.Visible = false;
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;

wbks = app.Workbooks;
_wbk = wbks.Add(xlsfile);
shs = _wbk.Sheets;
int nSheets = shs.Count;

for (int i = 1; i <= nSheets; i++)
{
Excel._Worksheet _iSheet = (Excel._Worksheet)shs.get_Item(i);
if (_iSheet.Name == tableName)
{
_iSheet.Delete();
found = true;

Marshal.ReleaseComObject(_iSheet);
break;
}
Marshal.ReleaseComObject(_iSheet);
}

if (!found)
throw new Exception(string.Format("Table \"{0}\" was't found", tableName));

_wbk.SaveAs(connect, _wbk.FileFormat, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}
finally
{
_wbk.Close(null, null, null);
wbks.Close();
app.Quit();

Marshal.ReleaseComObject(shs);
Marshal.ReleaseComObject(_wbk);
Marshal.ReleaseComObject(wbks);
Marshal.ReleaseComObject(app);
}
return true;
}


L’exception



Retrieving the COM class factory for component with CLSID

{00024500-0000-0000-C000-000000000046} failed due to the following

error: 80040154 Class not registered (Exception from HRESULT:

0x80040154 (REGDB_E_CLASSNOTREG)).


survient à la ligne


app = new Excel.Application();


Quelqu’un peut-il conseiller sur la manière de faire fonctionner cette fonctionnalité correctement ?




Source : [Stack Overflow](Developer technologies - Microsoft Q&A](Developer technologies - Microsoft Q&A)

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Comment utiliser Microsoft.Office.Interop.Excel sur une machine sans MS Office installé ?

Message par ayi »

Vous ne pouvez pas utiliser Microsoft.Office.Interop.Excel sans avoir MS Office installé.


Cherchez simplement sur Google des bibliothèques qui permettent de modifier des fichiers xls ou xlsx :


Répondre

Revenir à « Excel & VBA »