var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
Esto es lo que suelo usar. Es un poco diferente porque generalmente pego un AsEnumerable () en la edición de las tablas:
var data = ds.Tables["anyNameHere"].AsEnumerable();
ya que esto me permite usar LINQ para buscar y construir estructuras a partir de los campos.
var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
new MyContact
{
firstName= x.Field<string>("First Name"),
lastName = x.Field<string>("Last Name"),
phoneNumber =x.Field<string>("Phone Number"),
});
xlsx
, debe utilizar esta cadena de conexión en su lugar:string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName)
Si solo se trata de datos simples contenidos en el archivo Excel, puede leer los datos a través de ADO.NET. Consulte las cadenas de conexión enumeradas aquí:
http://www.connectionstrings.com/?carrier=excel2007 o http://www.connectionstrings.com/?carrier=excel
-Ryan
Actualización: entonces puedes leer la hoja de trabajo a través de algo como
select * from [Sheet1$]
fuente
El enfoque ADO.NET es rápido y fácil, pero tiene algunas peculiaridades que debe tener en cuenta, especialmente con respecto a cómo se manejan los DataTypes.
Este excelente artículo lo ayudará a evitar algunas dificultades comunes: http://blog.lab49.com/archives/196
fuente
Esto es lo que usé para Excel 2003:
fuente
¿Qué hay de Excel Data Reader?
http://exceldatareader.codeplex.com/
He utilizado su ira, en un entorno de producción, para extraer grandes cantidades de datos de una variedad de archivos de Excel en SQL Server Compact. Funciona muy bien y es bastante robusto.
fuente
<dimension>
elemento que faltaba en el<worksheet>
que me estaba causando problemas.Aquí hay un código que escribí en C # usando .NET 1.1 hace unos años. No estoy seguro si esto sería exactamente lo que necesita (y puede que no sea mi mejor código :)).
fuente
Koogra es un componente de código abierto escrito en C # que lee y escribe archivos de Excel.
fuente
Si bien solicitó específicamente .xls, lo que implica los formatos de archivo más antiguos, para los formatos OpenXML (por ejemplo, xlsx), le recomiendo el SDK de OpenXML ( http://msdn.microsoft.com/en-us/library/bb448854.aspx )
fuente
Leí mucho de los archivos de Excel en C # hace un tiempo, y usamos dos enfoques:
El último enfoque fue mucho más rápido: leer una tabla grande con 20 columnas y 200 líneas tomaría 30 segundos a través de COM y medio segundo a través de ODBC. Por lo tanto, recomendaría el enfoque de la base de datos si todo lo que necesita son los datos.
Salud,
Carl
fuente
ExcelMapper es una herramienta de código abierto ( http://code.google.com/p/excelmapper/ ) que se puede usar para leer hojas de cálculo de Excel como objetos fuertemente tipados. Es compatible con los formatos xls y xlsx.
fuente
Quiero mostrar un método simple para leer el archivo xls / xlsx con .NET. Espero que lo siguiente le sea útil.
El código es del artículo: http://www.c-sharpcorner.com/uploadfile/d2dcfc/read-excel-file-with-net/ . Puede obtener más detalles al respecto.
fuente
No es gratis, pero con la última versión de Office hay una muy buena automatización .Net API. (ha habido una API durante mucho tiempo pero fue una COM desagradable) Puede hacer todo lo que quiera / necesite en el código todo mientras la aplicación de Office siga siendo un proceso oculto en segundo plano.
fuente
Perdóname si estoy fuera de la base aquí, pero ¿no es esto para lo que son los PIA de Office ?
fuente
Últimamente, en parte para mejorar en LINQ ... He estado usando la API de automatización de Excel para guardar el archivo como hoja de cálculo XML y luego procesar ese archivo usando LINQ to XML.
fuente
SpreadsheetGear for .NET es un componente de hoja de cálculo compatible con Excel para .NET. Puede ver lo que dicen nuestros clientes sobre el rendimiento en el lado derecho de nuestra página de productos . Puede probarlo usted mismo con la evaluación gratuita y totalmente funcional .
fuente
SmartXLS es otro componente de hoja de cálculo de Excel que admite la mayoría de las características de Gráficos de Excel, motores de fórmulas y puede leer / escribir el formato opencel de Excel2007.
fuente
El componente .NET Excel Reader .NET puede satisfacer sus requisitos. Es lo suficientemente bueno para leer archivos XLSX y XLS. Así que pruébalo desde:
fuente
Recomiendo FileHelpers Library, que es una biblioteca .NET gratuita y fácil de usar para importar / exportar datos desde EXCEL, longitud fija o registros delimitados en archivos, cadenas o secuencias + Más.
La sección de documentación del enlace de datos de Excel http://filehelpers.sourceforge.net/example_exceldatalink.html
fuente
Puede intentar usar esta solución de código abierto que hace que tratar con Excel sea mucho más limpio.
http://excelwrapperdotnet.codeplex.com/
fuente
SpreadsheetGear es asombroso. Sí, es un gasto, pero en comparación con jugar con estas otras soluciones, vale la pena el costo. Es rápido, confiable, muy completo, y debo decir que después de usar este producto en mi trabajo de software a tiempo completo durante más de un año y medio, ¡su atención al cliente es fantástica!
fuente
La solución que utilizamos necesitaba:
Hay varias opciones, pero encontramos que NPoi (puerto .NET del proyecto de código abierto Poi existente de Java ) es el mejor: http://npoi.codeplex.com/
También permite trabajar con formatos de archivo .doc y .ppt
fuente
Si solo se trata de datos tabulares. Recomendaría los ayudantes de datos de archivos de Marcos Melli que se pueden descargar aquí .
fuente
Tarde a la fiesta, pero soy fanático de LinqToExcel
fuente
podría escribir una hoja de cálculo de Excel que cargue una hoja de cálculo de Excel dada y la guarde como csv (en lugar de hacerlo manualmente).
entonces podrías automatizar eso desde c #.
y una vez que está en csv, el programa c # puede asimilar eso.
(también, si alguien le pide que programe en Excel, es mejor fingir que no sabe cómo)
(Editar: ah sí, Rob y Ryan tienen razón)
fuente
Sé que la gente ha estado haciendo una "extensión" de Excel para este propósito.
Más o menos crea un botón en Excel que dice "Exportar al programa X", y luego exporta y envía los datos en un formato que el programa pueda leer.
http://msdn.microsoft.com/en-us/library/ms186213.aspx debería ser un buen lugar para comenzar.
Buena suerte
fuente
Acabo de hacer un proyecto de demostración rápida que requería administrar algunos archivos de Excel. El componente .NET del software GemBox fue adecuado para mis necesidades. Tiene una versión gratuita con algunas limitaciones.
http://www.gemboxsoftware.com/GBSpreadsheet.htm
fuente
Excel Package es un componente de código abierto (GPL) para leer / escribir archivos de Excel 2007. Lo utilicé en un proyecto pequeño y la API es sencilla. Funciona solo con XLSX (Excel 200 y), no con XLS.
El código fuente también parece estar bien organizado y es fácil de manejar (si necesita ampliar la funcionalidad o solucionar problemas menores como lo hice yo).
Al principio, probé el enfoque ADO.Net (cadena de conexión de Excel), pero estaba lleno de trucos desagradables; por ejemplo, si la segunda fila contiene un número, devolverá entradas para todos los campos de la columna a continuación y soltará silenciosamente cualquier dato Eso no encaja.
fuente
Usamos ClosedXML en sistemas bastante grandes.
fuente
Take.io
La hoja de cálculo hará este trabajo por usted, y sin cargo. Solo mira esto .fuente
Acabo de usar ExcelLibrary para cargar una hoja de cálculo .xls en un DataSet. Funcionó muy bien para mí.
fuente