Я хочу разрешить моему приложению импортировать данные из XLS
файлов. Я уже делаю это с CSV
файлами и XML
файлами, но хотел бы открыть область для пользователей. У меня проблемы с загрузкой файла. Мы загружаем файлы (_4 _, _ 5 _, _ 6_) в набор данных и работаем с ним оттуда. Код загрузки для XLS
приведен ниже.
FileInfo fi = new FileInfo(filename);
//create and open a connection with the supplied string
OleDbConnection objOleDBConn;
objOleDBConn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", fi.FullName));
objOleDBConn.Open();
DataTable dt = objOleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null || dt.Rows.Count == 0)
{
return;
}
string sheet = dt.Rows[0]["TABLE_NAME"].ToString();
//then read the data as usual.
OleDbDataAdapter objOleDBDa;
objOleDBDa = new OleDbDataAdapter(string.Format("select * from [{0}]",sheet), objOleDBConn);
objOleDBDa.Fill(data);
objOleDBConn.Close();
Итак, мои данные загружаются нормально, но похоже, что они устанавливают типы данных для различных столбцов, и это проблема для одного из моих столбцов. Это битовое поле, и мы решили принять False
, True
, Yes
, No
, Y
и N
. Есть код, который позже переводит это в логическое значение. Это отлично работает в файле CSV
(для которого строка подключения отличается), но в XLS
, если первые 10 строк говорят FALSE
или TRUE
, а затем говорят, что 11-я говорит YES
, тогда я просто получаю пустую запись. Я предполагаю, что он читает первые несколько записей и на основе этого определяет тип данных?
Вопрос: Есть ли способ отключить механизм определения типа данных столбца на основе первых нескольких записей?