Ho un problema con la lettura di DateColumns da un foglio Excel.Esiste un modo per forzare Microsoft.Jet.OLEDB a ottenere le colonne di data nel formato MM/GG/AAAA da Excel?
A volte le persone utilizzano formati di data diversi e questo comporta un problema. Diciamo che quando mi aspetto 07/26/2010
da una colonna di Excel ottengo 26-Jul-2010
perché l'utente ha cambiato il formato della data.
Io uso Microsoft.Jet.OLEDB
per leggere il foglio xls in un DataTable
.
Posso forzare in qualche modo il lettore OleDb qualunque sia il DateFormat impostato su XLS, per convertire tutte le date nel formato MM/GG/AAAA?
Io uso questo pezzo di codice per leggere il file di Excel:
string strConn;
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + uploadedFileInfo.FullName + ";" +
@"Extended Properties=""Excel 8.0;HDR=NO;""";
using (OleDbConnection connToExcel = new OleDbConnection(strConn))
{
//You must use the $ after the object you reference in the spreadsheet
connToExcel.Open();
string firstSheetName = ExcelUploadedFileReaderBuilder
.GetFirstExcelSheetName(connToExcel);
OleDbDataAdapter myCommand
= new OleDbDataAdapter(String.Format("SELECT * FROM [{0}]", firstSheetName), connToExcel);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "uploadedExcelTable");
DataTable dtUploadedExcel = myDataSet.Tables["uploadedExcelTable"];
lineCount = GetLineNumberWhereNULLRowOccured(dtUploadedExcel) + 1;
connToExcel.Close();
}
grazie Alex. Conosci qualche risorsa che copre il linguaggio di query che viene utilizzato da JET OLEDB? – pencilCake
AFAIK, JET OLEDB gira su SQL ea tale scopo, utilizzo un libro su SQL come riferimento. (Ecco da dove ho ottenuto la query.) Il libro è SQL Fundamentals 3ed. di John J. Patrick. È pubblicato da Prentice Hall. –
Poiché JET è il motore di Access, le query per Excel devono utilizzare la stessa sintassi di Access. Quindi i documenti di riferimento di Access potrebbero aiutare. –