Tengo un problema con la lectura de DateColumns de una hoja de Excel.¿Hay alguna manera de forzar a Microsoft.Jet.OLEDB a obtener Columnas de fecha en formato MM/DD/AAAA desde Excel?
A veces las personas usan formatos de fecha diferentes y esto trae un problema. Digamos que cuando espero 07/26/2010
de una columna de Excel obtengo 26-Jul-2010
porque el usuario ha cambiado su formato de fecha.
Uso Microsoft.Jet.OLEDB
para leer la hoja xls en un DataTable
.
¿Puedo de alguna manera forzar el lector OleDb independientemente de que el formato de fecha esté configurado en XLS, para convertir todas las fechas en formato MM/DD/YYYY?
utilizo este pedazo de código para leer el archivo de 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();
}
gracias Alex. ¿Conoce algún recurso que cubra el lenguaje de consulta utilizado por JET OLEDB? – pencilCake
AFAIK, JET OLEDB se ejecuta en SQL y para ese propósito, uso un libro en SQL como referencia. (De allí obtuve la consulta.) El libro es SQL Fundamentals 3ed. por John J. Patrick. Es publicado por Prentice Hall. –
Dado que JET es el motor detrás de Access, las consultas para Excel deben usar la misma sintaxis que Access. Entonces, los documentos de referencia de Access podrían ser de ayuda. –