Tengo una hoja de cálculo de Excel que se colocará en una unidad de red compartida. Es necesario que acceda a mi aplicación Winforms C# 3.0 (muchos usuarios podrían estar usando la aplicación y accediendo a esta hoja de cálculo al mismo tiempo). Hay una gran cantidad de datos en una hoja de trabajo. Estos datos se dividen en áreas que he nombrado como rangos. Necesito poder acceder a estos rangos de forma individual, devolver cada rango como un conjunto de datos y luego vincularlo a una grilla.Convertir el rango de Excel a ADO.NET DataSet o DataTable, etc.
He encontrado ejemplos que usan OLE y los he puesto a trabajar. Sin embargo, he visto algunas advertencias sobre el uso de este método, además en el trabajo hemos estado utilizando Microsoft.Office.Interop.Excel como el estándar hasta ahora. Realmente no quiero alejarme de esto a menos que sea necesario. Nuestros usuarios usarán Office 2003 hasta donde yo sé.
puedo conseguir el rango que necesito con el siguiente código:
MyDataRange = (Microsoft.Office.Interop.Excel.Range)
MyWorkSheet.get_Range("MyExcelRange", Type.Missing);
La forma OLE era agradable ya que tomaría mi primera fila y convertir los en columnas. Mis rangos (12 en total) son en su mayoría diferentes entre sí en número de columnas. No sabía si esta información afectaría cualquier recomendación.
¿Hay alguna forma de usar Interop y obtener el rango devuelto en un conjunto de datos?
Aprecio todas las respuestas. Como no pude encontrar nada incorporado, avancé y simplemente rodé por el rango y creé una tabla de datos sobre la marcha. Todas las sugerencias enumeradas aquí realmente funcionarían, es solo que no quería usar OLEDB y no puedo traer una biblioteca de terceros en este momento. Gracias por tus respuestas rápidas. Muy apreciado. – user295197
Esto es un pseudo código ... –