lo que quiero hacer
Estoy intentando utilizar el Microsoft.Office.Interop.Excel namespace para abrir un archivo de Excel (XSL o CSV, pero lamentablemente no XSLX) y la importación en un conjunto de datos. No tengo control sobre la hoja de trabajo ni los nombres de las columnas, así que debo permitir cambios en ellos.¿Cómo importo de Excel a un DataSet usando Microsoft.Office.Interop.Excel?
Lo que he intentado
he probado el OLEDB method de esto en el pasado, y tenía un montón de problemas con él (con errores, lento, y requiere un conocimiento previo de esquema del archivo de Excel), por lo Quiero evitar hacer eso de nuevo. Lo que me gustaría hacer es usar Microsoft.Office.Interop.Excel para importar el libro de trabajo directamente a un DataSet, o recorrer las hojas de trabajo y cargar cada una en una DataTable.
Lo creas o no, he tenido problemas para encontrar recursos para esto. A few searches on StackOverflow han encontrado principalmente personas que intentan hacer lo contrario (DataSet => Excel), o la técnica OLEDB. Google no ha sido mucho más útil.
Lo que tengo hasta ahora
public void Load(string filename, Excel.XlFileFormat format = Excel.XlFileFormat.xlCSV)
{
app = new Excel.Application();
book = app.Workbooks.Open(Filename: filename, Format: format);
DataSet ds = new DataSet();
foreach (Excel.Worksheet sheet in book.Sheets)
{
DataTable dt = new DataTable(sheet.Name);
ds.Tables.Add(dt);
//??? Fill dt from sheet
}
this.Data = ds;
}
estoy bien, ya sea con la importación de todo el libro a la vez, o bucle a través de una hoja a la vez. ¿Puedo hacer esto con Interop.Excel?
Adición de recompensas, porque realmente me gustaría saber si Interop.Excel tiene esta capacidad. Otorgaré la recompensa si alguien puede obtener los datos de esa manera, tan automágicamente como sea posible, sin conocimiento previo del contenido del archivo Excel. –
Esto es posible _si_ puede garantizar algo sobre los datos de antemano. Lo que temo es que quieras que algo funcione para cualquier libro de trabajo antiguo y extraer los datos tabulares. Esa información tabular debería estar demarcada por rangos con nombre o debería seguir algún tipo de convención. Si seguía la convención de que cada hoja en el libro de trabajo se veía exactamente como un conjunto de registros con una fila de encabezado en la fila 1, entonces sería posible. De lo contrario, no tendrías suerte ... – adamleerich