2012-06-04 3 views
0

Вот мой код для чтения загруженного файла Excel. Что работает абсолютно нормально в течение последних 3 месяцев.Чтение заблокированного файла Excel (.xlsx), с использованием C#

var connectionString = GetOleDbConnectionString(file); 

using (var dataAdapter = new OleDbDataAdapter("select * from [Sheet1$]",   connectionString)) 
{ 
    dataAdapter.Fill(ds, tableCount.ToString()); 
} 

private static string GetOleDbConnectionString(string file) 
{ 
    var fileExtension = Path.GetExtension(file); 

    if (fileExtension.EqualsCCIC(".xlsx")) 
    { 
     return @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;".F(file); 
    } 
} 

Проблема: загруженное первенствует файл получил "StartDate" в первом столбце. Но в этой колонке также есть имя сотрудника вместе с датами (мне нужно прочитать это имя сотрудника для обработки этого листа).

Я столкнулся с одним новым файлом Excel (Excel2007 .xlsx). Когда я загружаю новый файл (который имеет как имя сотрудника, так и даты), он считывает только даты из столбца и игнорирует имена сотрудников. мой набор данных показывает (хотя и отлаживает) эти ячейки в таблице данных как пустые строки. Согласно бизнес-логике, мне нужно знать, к какому сотруднику относятся эти даты. Я удалил блокировки для всего листа (форматирование ячейки >> Защита >> блокировка), но по-прежнему бесполезно. Как я могу решить эту проблему? У меня нет подсказки ...

Он успешно читает старые файлы (2007 .xlsx) Я не понял, что это делает OLEDB для скрытия строк в столбце Date?

ответ

1

Значит, вы говорите, что новый файл excel является проблемой? Если это так ...

  • проверка данных в файле (в частности, первые 8 строк в столбце Имя сотрудника)
  • копировать данные из нового файла в файл, который, как известно, работает

Accessing Excel Spreadsheet with C# occasionally returns blank value for some cells Заканчивать ответ абхов в приведенной выше ссылке (в частности, пункты 1. и 2.)

+0

Благодарности Я только изменил мою строку подключения. Включено HDR = Нет; IMEX = 1 в расширенных свойствах. – Jayee

Смежные вопросы