varias tres pruebas logicas funcion ejemplos conjunto condiciones con aparece anidada c# excel interop comexception

c# - tres - Cómo crear una instancia de Excel si Excel no está instalado



funcion si.conjunto no aparece (4)

Mi pregunta es, ¿hay alguna otra forma de usar mi programa además de registrar Interop dll en la máquina de destino?

Está preguntando si hay alguna forma de usar su programa, que usa la interoperabilidad de Excel, cuando Excel no está instalado en la computadora que ejecuta su programa. La respuesta corta es no. La respuesta más larga es sí, si está dispuesto a refactorizar su programa para no utilizar interoperabilidad.

Puede usar el SDK de OOXml proporcionado por Microsoft si la versión de Excel a la que está apuntando es de 2007 en adelante. También puede usar una biblioteca de terceros como Aspose si está dispuesto a gastar un poco de dinero.

Un ejemplo del uso del SDK de OOXml para insertar una hoja de cálculo en un archivo de Excel se puede encontrar en los documentos de Microsoft .

// Given a document name, inserts a new worksheet. public static void InsertWorksheet(string docName) { // Open the document for editing. using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) { // Add a blank WorksheetPart. WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); newWorksheetPart.Worksheet = new Worksheet(new SheetData()); Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>(); string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart); // Get a unique ID for the new worksheet. uint sheetId = 1; if (sheets.Elements<Sheet>().Count() > 0) { sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1; } // Give the new worksheet a name. string sheetName = "Sheet" + sheetId; // Append the new worksheet and associate it with the workbook. Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName }; sheets.Append(sheet); } }

En mi aplicación C #, con la ayuda de Excel Interop dll (como referencia) estoy leyendo / escribiendo archivos de Excel. Si muevo este programa al sistema donde Office / Excel no está instalado (piense en una máquina limpia), estoy golpeando con el siguiente error.

System.Runtime.InteropServices.COMException (0x80040154): Fallo al recuperar la fábrica de clases COM para el componente con CLSID {00024500-0000-0000-C000-000000000046} (REGDBE) )).

Se espera un error anterior ya que no hay Excel en la máquina de destino.
Mi pregunta es, ¿hay alguna otra forma de usar mi programa además de registrar Interop dll en la máquina de destino?


De toda la investigación que hice hace un tiempo cuando tuve que interactuar con un archivo de Excel en un servidor, tiene que instalar Office.


Incluso Microsoft no recomienda usar las bibliotecas Interop en un servidor . Así que mejor encontrar un marco alternativo para hacer Excel por ti. He utilizado con éxito Npoi en el pasado para ese propósito.

Sé que esto no es una respuesta a su excepción. Pero, honestamente, Interop es un camino hacia un sinfín de problemas y mensajes de excepción crípticos.

Actualización 2017 : No he usado NPOI por un tiempo y moví todos mis proyectos a EPPlus : una biblioteca basada en OpenXML que le crea archivos xlsx modernos.