Comment utiliser Microsoft.Bureau de.Interop.Excel sur une machine sans installé MS Office?
Je suis en train d'écrire une application qui fonctionne avec des fichiers excel.
J'ai besoin d'une fonction pour supprimer une feuille.
J'ai utiliser une assemblée Microsoft.Office.Interop.Excel.dll.
Il est en cours d'exécution fine sur l'ordinateur du développeur, mais quand j'essaie de le déployer sur le serveur j'obtiens une erreur:
Impossible de charger le fichier ou l'assembly 'office, Version=14.0.0.0,
Culture=neutral, PublicKeyToken=71e9bce111e9429c' ou une de ses
dépendances
Je comprends que le problème se produit lorsque MS Office n'est pas installé sur une machine.
Le client ne voulez pas l'installer et acheter MS Office sur un serveur qui n'est pas à n'importe quel prix.
J'ai installer "Redistribuable Primary Interop Assemblies" sur l'ordinateur du développeur comme indiqué ici: http://forums.asp.net/t/1530230.aspx/1
et compiler mon projet de nouveau.
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;
}
Une exception
De la récupération de la fabrique de classe COM pour le composant avec le CLSID
{00024500-0000-0000-C000-000000000046} a échoué en raison de l'suivantes
erreur: 80040154 Classe non enregistrée (Exception de HRESULT:
0x80040154 (REGDB_E_CLASSNOTREG)).
se produit sur la ligne
app = new Excel.Application();
Quelqu'un peut vous conseiller sur la façon d'obtenir cette fonction de travail avec succès?
- Et bien je vois c'est un vieux poste - donc peut-être trop tard, mais j'ai dû le faire dans le passé et j'ai utilisé les Formats Open XML: support.office.com/en-us/article/...
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser Microsoft.Bureau de.Interop.Excel sans avoir de ms office installé.
Il suffit de chercher dans google pour certaines bibliothèques, qui permet de modifier xls ou xlsx:
"Si le Client n'a pas envie d'installer et d'acheter MS Office sur un serveur qui n'est pas à n'importe quel prix", alors vous ne pouvez pas utiliser Excel ... Mais je n'arrive pas tromper: il s'agit d'un Bureau de base de la licence qui coûte quelque chose comme 150 USD ... Et je suppose que de passer du temps à trouver une alternative coûtera beaucoup plus que ce montant!
vous pouvez créer un service et de générer excel sur le serveur et ensuite permettre aux clients de télécharger excel.
cos achat excel licence pour 1000 ppl, il est préférable d'avoir une licence pour le serveur.
espère que ça aide.
Chercher GSpread.NET.
Vous pouvez travailler avec Google feuilles de calcul, par l'aide de l'API de Microsoft Excel.
Vous n'avez pas besoin de réécrire l'ancien code avec la nouvelle API de Google d'utilisation. Il suffit d'ajouter quelques ligne:
C'est un projet OpenSource et il ne nécessite pas d'Office doit être installé.
La documentation disponible ici http://scand.com/products/gspread/index.html