Delphi - строки Excel получают по запросу ADO - PullRequest
2 голосов
/ 31 марта 2011

У меня есть следующий файл Excel

enter image description here

Я установил AdoConnection.ConnectionString в

 AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' +
           'Data Source=' +aFileName + ';' +
           'Extended Properties=Excel 8.0;';

где aFileName - имя файла Excel.

После этого с компонентом ADOQuery (для соединения установлено AdoConnection) я выполняю 'select * from [Sheet1 $]'.

Проблема в том, что строки 16802 и 17179 отсутствуют в результате запроса, и я не знаю почему. Все поля с листа установлены на общие. Я использую Delphi 7.

У вас есть идеи?

LE: тип всех полей из AdoQuery: WideString. В запросе присутствуют только те строки, где значения из последних 2 столбцов имеют этот «зеленый знак». Я не гений в Excel, но запрос не должен получить все данные, существующие на листе?

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

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

Решение состоит в том, чтобы использовать режим импорта (IMEX = 1). Обратите внимание, что это имеет странный вид, если вы также пытаетесь обновить строки.

 AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' +
       'Data Source=' +aFileName + ';' +
       'Extended Properties="Excel 8.0;IMEX=1"';

PRB: значения Excel возвращаются как NULL с использованием DAO OpenRecordset

1 голос
/ 31 марта 2011

В строке 2 есть несколько числовых полей в столбцах D и E, вы должны изменить это значение на строку, вы можете изменить тип ячейки на текст.

1 голос
/ 31 марта 2011

Одна вещь, которая приходит на ум, - это то, что среди скрытых строк есть одна или несколько строк, которые не имеют значения ни в одной ячейке. Excel обычно принимает первую полностью пустую строку и столбец как границы диапазона данных. Диапазон данных в этом случае - это не просто диапазон данных, а набор строк и столбцов, которые Excel воспринимает как таблицу. Что вы делаете, получая доступ к листу через Ado.

...