Abra una hoja de cálculo Excel 2003 con C #. No se pudo encontrar ISAM instalable. Excepción

StackOverflow https://stackoverflow.com/questions/644331

  •  22-07-2019
  •  | 
  •  

Pregunta

Necesito extraer datos de un xls, también necesito que el usuario pueda cambiar la ubicación del archivo que lo hará. Por lo tanto, una OleDbConnection parecía un buen comienzo, y fue hasta la primera celda combinada.

Esto funciona para todas las celdas menos las fusionadas:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=F:\test.xls;Extended Properties=Excel 8.0;");
cmd.CommandText = "SELECT * FROM [Sheet$]";
cmd.Connection.Open();

Descubrí que esto debería permitir el acceso a las celdas combinadas:

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;");

Pero luego obtengo una No se pudo encontrar la excepción ISAM instalable en cmd.conn.open ();

Seguí el consejo aquí: http://support.microsoft.com/kb/209805

Y aquí: Error: " No se pudo encontrar el ISAM instalable "

Sin suerte.

Estoy abierto a otras formas de extraer datos de los xls. O incluso si hubiera un comando que pudiera ejecutar en los xls para eliminar las celdas duplicadas que podrían funcionar.

¿Fue útil?

Solución

Creo que es solo porque tiene que incluir las Propiedades extendidas entre comillas si tiene más de una

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';");

O si las comillas simples no funcionan (se entiende)

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;"";");

Si bien su ejemplo no lo muestra, este error también puede ser causado por espacios en la ruta del archivo. En cuyo caso, también necesitaría ajustar la ruta del archivo entre comillas.

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""F:\test.xls"";...

Otros consejos

Suponiendo que los requisitos de su sistema incluyen una instalación de Excel, puede usar la Biblioteca de objetos de Excel

Excel.Sheets sheets = m_Excel.Worksheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);
Excel.Range range = worksheet.get_Range("A1", "E1".ToString());

etc.

Consulte también VSTO

Prueba esto

Tuve este problema. solo por comillas

string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFilePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";

SpreadsheetGear for .NET es un componente de hoja de cálculo libre de regalías para .NET y debe hacer todo lo que desee .NET de 32 bits y 64 bits sin dependencia de Excel (o cualquier otra cosa que no sea .NET 2.0+).

Puede ver muestras de ASP.NET en vivo aquí y descargar la versión de prueba gratuita aquí si desea probarlo usted mismo.

Descargo de responsabilidad: soy dueño de SpreadsheetGear LLC

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top