open - read excel c# without office
.NET Excel Library que puede leer/escribir archivos.xls (3)
¿Hay alguna razón por la que no pueda usar la conexión ODBC de Excel para leer y escribir en Excel? Por ejemplo, he usado el siguiente código para leer desde un archivo Excel fila por fila, como una base de datos:
private DataTable LoadExcelData(string fileName)
{
string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=/"Excel 12.0;HDR=Yes;IMEX=1/";";
OleDbConnection con = new OleDbConnection(Connection);
OleDbCommand command = new OleDbCommand();
DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '''' ORDER BY LastName, FirstName", con);
myCommand.Fill(dt);
Console.WriteLine(dt.Rows.Count);
return dt;
}
Puede escribir en la "base de datos" de Excel de la misma manera. Como puede ver, puede seleccionar el número de versión que utilizará para poder degradar las versiones de Excel para la máquina con Excel 2003. En realidad, lo mismo se aplica al uso de Interop. Puedes usar la versión más baja y debería funcionar con Excel 2003 aunque solo tengas la versión más alta en tu PC de desarrollo.
Estoy buscando una biblioteca de Excel que lea / escriba archivos .xls (no .xlsx).
Estoy usando excellibrary pero tiene excellibrary y parece que no puedo abrir los archivos que creo . El problema se conoce desde hace casi un año y aún no se ha solucionado.
He visto en otro hilo que alguien sugirió EPPlus , pero eso solo funciona con el formato .xlsx 2007/2010.
He usado Koogra en el pasado, y he estado bastante contento con él, pero creo que solo puede leer ... no escribir.
Si conoce una biblioteca, por favor, hágame saber cómo se llama.
Editar: estoy muy contento de crear mi archivo de Excel con el Microsoft.Office.Interop.Excel incorporado si es necesario; sin embargo, mi máquina tiene Office 2007 y las máquinas de destino solo tienen Office 2003. Noté que tengo 2 versiones de archivos para esa biblioteca: 12 y 14. Revisé la versión de Excel en las máquinas de destino y es 11.8169.8172 - ¿Asumo que la interpolación de Excel incorporada no funcionará en el destino?
Puede considerar una herramienta de terceros que llame al componente Excel Jetcell .NET para archivos de Excel de lectura / escritura:
Muestra de C #
// Create New Excel Workbook
ExcelWorkbook Wbook = new ExcelWorkbook();
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;
Cells["A1"].Value = "Excel writer example (C#)";
Cells["A1"].Style.Font.Bold = true;
Cells["B1"].Value = "=550 + 5";
// Write Excel XLS file
Wbook.WriteXLS("excel_net.xls");
Muestra de VB.NET
'' Create New Excel Workbook
Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells
Cells("A1").Value = "Excel writer example (C#)"
Cells("A1").Style.Font.Bold = True
Cells("B1").Value = "=550 + 5"
'' Write Excel XLS file
Wbook.WriteXLS("excel_net.xls")
Yo recomendaría NPOI . NPOI es GRATIS y funciona exclusivamente con archivos .XLS. Me ha ayudado mucho.
Detalle: no necesita tener instalado Microsoft Office en su máquina para trabajar con archivos .XLS si usa NPOI.
Verifique estas publicaciones en el blog:
Crear hojas de cálculo Excel .XLS y .XLSX en C #
NPOI con tabla de Excel y tabla dinámica
[ACTUALIZAR]
NPOI 2.0 agregó soporte para XLSX y DOCX.
Puedes leer más sobre esto aquí: