2012-06-04 11 views
5

un'occhiata a questo post: Excel "External table is not in the expected format."lettura xlsx salvato xls con LinqToExcel

Ho lo stesso problema descritto in questo post, ma sto usando LinqtoExcel per leggere il file invece di query semplici.

Quale sarebbe l'equivalente LinqToExcel per l'impostazione della stringa di connessione come suggerisce la risposta a tale post?

Ecco il codice che sto utilizzando:

var excelOM = new ExcelQueryFactory(pPathArchivoOM); 
var despachosClient = from c in excelOM.Worksheet<RegistroDespachoOM>("Tabla_1") 
         where c.DESTINAT.Contains("SOMETEXT") 
         select c; 
//Identificar los despachos asociados a números de documento sin datos aún. 
foreach (RegistroDespachoOM despacho in despachosClient) 
{ ... 

E il mio problema è: "tabella esterna non è nel formato previsto" in partenza foreach.

EDIT (il mio problema è risolto ma la domanda rimane senza risposta): Sto usando EPPlus anziché LinqToExcel per questa attività e tutto funziona correttamente ora.

+0

LinqToExcel funziona anche per file Excel 2007. Hai solo bisogno di utilizzare il motore di database Ace, che è spiegato nella risposta qui sotto. – Paul

risposta

5

È necessario utilizzare il motore di database ACE anziché il motore di database JET.

È possibile eseguire questa operazione con LinqToExcel impostando la proprietà DatabaseEngine. Ecco un esempio

var excelOM = new ExcelQueryFactory(pPathArchivoOM); 
excelOM.DatabaseEngine = DatabaseEngine.Ace; 
+1

Grazie! Non ho trovato alcuna proprietà come DatabaseEngine perché stavo usando LinqToExcel 1.0. Ho aggiornato a LinqToExcel 1.6 e ora quella proprietà è lì; impostando mi ha permesso di leggere il file problematico con LinqToSql. Continuerò ad usare EPPlus anche perché è più orientato agli oggetti. LinqToExcel è la mia opzione per i file excel puri 97/2003. – daniloquio

+0

@daniloquio LinqToExcel può leggere i file Excel 2007. Hai solo bisogno di utilizzare il motore di database Ace. – Paul

+0

su 64 bit cambia l'estensione in xls o semplicemente rimuovilo. Senza quello - lo stesso errore. - - - - Dalla documentazione: imposta il motore del database da utilizzare (i fogli di calcolo che terminano con xlsx, xlsm e xlsb devono utilizzare il motore del database Ace) (se in esecuzione a 64 bit, questo valore è impostato su ACE (JET non funziona comunque), se in esecuzione 32 bit questo detiene JET) – Artiom

Problemi correlati