Помощь с нечетным поведением чтения даты Excel через соединение OLE DB - PullRequest
1 голос
/ 22 июля 2011

Я использую следующий код для импорта простой электронной таблицы Excel в набор данных через соединение ole db.При чтении дат из электронной таблицы наблюдается различное поведение в зависимости от того, открывается ли электронная таблица другим процессом или нет.

Поведение может быть легко воспроизведено заново.Создайте файл xlsx со строкой заголовка и одной строкой данных с полем даты.Попробуй 01.01.2011.Оставьте электронную таблицу открытой, запустите следующий код и проверьте вывод XML.Вы увидите значение 40544, где должно было быть 01.01.2011, если вы закроете электронную таблицу и запустите тот же код, который вы действительно увидите 01.01.2011 в выводе xml.Любые идеи или предложения о том, как получить последовательное поведение?

var fileName = @"C:\Test.xlsx";
var connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;""", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds);

ds.WriteXml(@"c:\test.xml");

1 Ответ

4 голосов
/ 23 июля 2011

Создание файла xlsx со строкой заголовка

Проверьте.

var connectionString = String.Format (@ "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = {0}; Расширенные свойства =" "Excel 12.0; HDR = NO ; IMEX = 1; "" ", fileName);

А? :)

Измените HDR (заголовок) на Да, и я думаю, вы увидите, что это решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...