Я использую следующий код для импорта простой электронной таблицы 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");