2013-08-21 4 views
2

Эй, я использую DataAdapter, чтобы прочитать файл excel и заполнить таблицу данных этими данными.OleDbDataAdapter не заполняет все строки

Вот мой запрос и строка подключения.

private string Query = "SELECT * FROM Sheet1"; 
private string ConnectString = "Provider=Microsoft.ACE.OLEDB.12.0;" 
            + "Data Source=\"" + Location + "\";" 
            + "Extended Properties=\"Excel 12.0 Xml;HDR=YES\""; 

OleDbDataAdapter DBAddapter = new OleDbDataAdapter(Query, ConnectString); 
DataTable DBTable = new DataTable(); 
DBAddapter.Fill(DBTable); 

Проблема заключается в том, что мой файл excel имеет 12000 записей, однако его единственное заполнение 2502 записей в моей таблице данных.

Есть ли ограничение на количество записей, которые адаптер данных может читать и записывать в таблицу данных?

+0

Вы уверены, что 'Sheet1' содержит записи' 12000'? «DataTable» может иметь некоторый предел, но не такой маленький. Не могли бы вы попытаться заменить 'Sheet1' на' Sheet1 $'? –

+0

Я думал, что вы должны окружить имя листа «[...]» и, конечно, добавить $ к названию листа, как King King сказал –

+0

, это не то, как я добавляю имя листа в запрос. Он получает правильное имя листа, потому что я получаю некоторые данные. Я думаю, потому что я копирую и вставляя данные в файл excel, вероятно, не отформатированный для того, чтобы oleDBAdapter мог его прочитать. Я использую имя листа, как это, в моем фактическом коде. [ "+ sheetNames [0] +"] – Mitch

ответ

0

Проблема может заключаться в том, что лист будет содержать смешанные данные, и это будет только чтение чисел. Решение состоит в том, чтобы указать:

Properties="Excel 12.0;IMEX=1"; 

IMEX=1 позволяет читателю импортировать все данные не только цифры.

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