Apri un foglio di calcolo di Excel 2003 con C #. Impossibile trovare ISAM installabile. Eccezione

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

  •  22-07-2019
  •  | 
  •  

Domanda

Devo estrarre i dati da un xls, ho anche bisogno che l'utente sia in grado di cambiare la posizione del file che vorrà. Quindi un OleDbConnection sembrava un buon inizio, ed è stato fino alla prima cella unita.

Funziona per tutti tranne le celle unite:

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();

Ho scoperto che questo dovrebbe consentire l'accesso alle celle unite:

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

Ma poi ottengo un'eccezione ISAM non installabile su cmd.conn.open ();

Ho seguito il consiglio qui: http://support.microsoft.com/kb/209805

E qui: Errore: " Impossibile trovare ISAM installabile "

Nessuna fortuna.

Sono aperto ad altri modi per estrarre dati da xls. O anche se ci fosse un comando che potrei eseguire su xls per rimuovere le celle mirged che potrebbero funzionare.

È stato utile?

Soluzione

Penso che sia solo perché devi racchiudere le Proprietà estese tra virgolette se ne hai più di una

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

O se le virgolette singole non funzionano (ottieni l'idea)

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

Anche se il tuo esempio non lo mostra, questo errore può anche essere causato da spazi nel percorso del file. Nel qual caso dovrai racchiudere anche il percorso del file tra virgolette.

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

Altri suggerimenti

Supponendo che i requisiti di sistema includano un'installazione di Excel, è possibile utilizzare la Libreria oggetti 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());

ecc.

Vedi anche VSTO

Prova questo

Ho avuto questo problema. solo per virgolette

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

SpreadsheetGear per .NET è un componente di foglio elettronico gratuito per .NET e dovrebbe fare tutto ciò che desideri .NET a 32 e 64 bit senza alcuna dipendenza da Excel (o qualsiasi altra cosa diversa da .NET 2.0+).

Puoi vedere esempi ASP.NET in tempo reale qui e scaricare la prova gratuita qui se vuoi provarlo tu stesso.

Disclaimer: possiedo SpreadsheetGear LLC

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top