2010-04-16 151 views
41

Duplicar posible:
Create Excel (.XLS and .XLSX) file from C#crear archivos Excel desde C# y sin oficina

Estoy escribiendo un programa que genera informes de Excel, en la actualidad el uso de la referencia Microsoft.Interop.Excel. Mi computadora dev tiene Excel, pero el usuario final puede o no tener Office instalado. ¿Esta herramienta fallará si Office no está instalada en la computadora de los usuarios finales, o este servicio interoperativo está separado de la aplicación real?

+0

He publicado un C# biblioteca libre de usar para hacer esto: http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm –

Respuesta

23

A menos que tenga Excel instalado en el servidor/PC o utilizar una herramienta externa (lo cual es posible sin el uso de Excel interoperabilidad, consulte Create Excel (.XLS and .XLSX) file from C#), se producirá un error . El uso de la interoperabilidad requiere la instalación de Excel.

8

Una interoperacion llama a algo mas, es un ensamble de interoperabilidad, por lo que se interopera con algo ... en este caso Excel, el Excel instalado real.

En este caso sí, no se ejecutará porque depende de en excel, solo llama a las funciones de Excel. Si no lo tienen instalado ... de mala suerte.

Hay métodos para generar y sin Excel, siempre que el formato de archivo de 2007 está bien, estos son algunos aspectos:

Como ya he dicho, sin embargo, este es el 2007 formato, normalmente en todo caso, ese es el factor decisivo.

+1

+1 para señalar que la "interoperabilidad" necesita algo con lo que interactuar. –

5

hay un puñado de opciones:

  • NPOI - ¿Qué es gratuita y abierta fuente.
  • Aspose - Definitivamente no es gratis pero es robusto.
  • Spreadsheet ML - Básicamente XML para crear hojas de cálculo.

El uso de Interop requerirá que Excel esté instalado en la máquina desde la cual se está ejecutando. En una solución del lado del servidor, esto será horrible. En su lugar, debe usar una herramienta como las de arriba que le permita crear un archivo de Excel sin que se instale Excel.

Si el usuario no tiene Excel pero tiene una herramienta que leerá Excel (como Open Office), entonces obviamente podrán abrirlo. Microsoft tiene un Excel viewer gratuito disponible para aquellos usuarios que no tienen Excel.

+0

+1 para Aspose. Lo he utilizado con gran éxito, y es muy fácil trabajar con él. – rmeador

+0

NPOI ha funcionado bien para mis propósitos (por ejemplo, no hay presupuesto para comprar nada). Sin embargo, no es compatible con la generación .xslx. – Odrade

+1

@rmeador Bueno, ciertamente tienes suerte. No he tenido más que dolor usando Aspose. Horrible control de calidad con numerosos cambios no documentados, bichos tontos constantes, diseño de API cuestionable (NullReferenceException al establecer una propiedad como nula ... wtf ?!) Su única gracia salvadora es que las reparaciones salen a una tasa decente, pero cada solución que lanzan significa horas desperdiciadas pasé probando sus parches ya que es imposible confiar en lo que te dan. – Krypes

1

Puede usar la clase ExcelStorage de la biblioteca FileHelpers, es muy fácil y simple ... necesitará instalar Excel 2000 o una versión posterior en la máquina.

El FileHelpers es un uso gratuito y fácil de .NET biblioteca para importar/exportar datos de longitud fija o registros delimitados en archivos, cadenas o flujos.

37

Si está interesado en crear archivos .xlsx (Office 2007 y posteriores), tiene suerte. Office 2007+ utiliza OpenXML que, a falta de una descripción más adecuada, es archivos XML dentro de un zip llamado .xlsx

Tome un archivo de Excel (2007+) y cámbiele el nombre a .zip, puede abrirlo y tomar una Mira. Si usa .NET 3.5, puede usar la biblioteca System.IO.Packaging para manipular las relaciones & zipfile y linq to xml para jugar con xml (o simplemente DOM si está más cómodo).

De lo contrario id reccomend DotNetZip, una poderosa biblioteca para la manipulación de archivos zip.

OpenXMLDeveloper tiene muchos recursos sobre OpenXML y usted puede encontrar más allí.

Si desea .xls (2003 y siguientes), tendrá que buscar en bibliotecas de terceros o quizás aprender el formato de archivo usted mismo para lograr esto sin Excel instalado.

+0

+1 por un buen resumen –

22

Try EPPlus si utiliza Excel 2007. Soporta rangos, cellstyling, gráficos, formas, imágenes y un montón de otras cosas

Cuestiones relacionadas