2016-07-13 4 views
0

Update:OleDbDataAdapter выходит из данных из ячеек Excel

Используя открытый источник ExcelDataReader (https://www.nuget.org/packages/ExcelDataReader/) решить эту проблему.


Я читаю в данных из файла .xlsx как этот

DataSet ds = new DataSet(); 
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties= Excel 12.0;"); 

cn.Open(); 

OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ["Sheet1$"]", cn); 
da.Fill(ds, "Sheet1$"); 

cn.Close(); 

И все, кажется, работает хорошо, но в двух отдельных строк адаптер просто обрезает последнюю строку одной ячейки (обе затронутые строки имеют одинаковое содержимое в этой конкретной ячейке).

т.е .:

"1 : 0x01 : Text_Example1(sometext) 
2 : 0x02 : Text_Example2(sometext) 
3 : 0x04 : TexT_Example3(sometext)" 

becomes 

"1 : 0x01 : Text_Example1(sometext) 
2 : 0x02 : Text_Example2(sometext) 
3 :" 

Что такое проблема здесь и как я могу это исправить? Мне кажется совершенно случайным, потому что во всех остальных строках эта проблема не возникает.

Редактировать: Я уже пробовал его с расширенными свойствами HDR = NO/YES и IMEX = 0/1, как это было предложено во многих связанных вопросах, но это тоже не помогло.

+0

Может ли показать изображение на экране листа Excel? – Sachu

+0

Я не могу, потому что его конфиденциальные данные – CptnBeefheart

+1

обычно эта проблема возникает, когда формат ячейки отличается от – Sachu

ответ

0

Если я могу предложить альтернативный подход, файл .xlsx представляет собой файл OpenXML - ZIP-файл, содержащий XML и другие метаданные.

Microsoft имеет API OpenXML, который позволяет вам манипулировать такими файлами. Это «родной» способ доступа к данным и должен вести себя корректно.

Существует проект с открытым исходным кодом под названием ClosedXML, целью которого является сделать OpenXML API более удобным для разработчиков. Я не использовал его сам, но видел, как он успешно использовался в существующем коде.

+0

Я не использовал ClosedXML, но Excel Data Reader (также с открытым исходным кодом), и теперь он работает. Но спасибо в любом случае за предложение – CptnBeefheart

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