Импорт данных из файла XLS с использованием ADO и Delphi

Я хочу импортировать некоторые данные из файла Excel (xls) с помощью TADOConnection и TADOTable .

Я подключаюсь к файлу без проблем, но когда я открываю TADOTable некоторые поля имеют ftFloat данных ftFloat потому что их значения в файле excel являются числовыми, но их значения не являются числом!

Я хочу, чтобы все поля TADOTable (столбцы файла Excel) имели ftString данных ftString .

Я установил типы columms в файле Excel в Text но никаких изменений не повлияло!

Как я могу это сделать?

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

    ADO эффективно игнорирует column type при импорте Excel. Вместо этого он угадывает типы столбцов, как указано в этой ссылке MSDN :

    Предупреждение о смешанных типах данных

    Как указывалось ранее, ADO должен угадывать тип данных для каждого столбца в листе или диапазоне Excel. (Это не зависит от настроек форматирования ячейки Excel.) Серьезная проблема может возникнуть, если у вас есть числовые значения, смешанные с текстовыми значениями в том же столбце. И Jet, и ODBC Provider возвращают данные типа большинства, но возвращают NULL (пустые) значения для типа данных меньшинства. Если два типа одинаково смешаны в столбце, поставщик выбирает числовой текст.

    Одним из способов загрузки всех полей в виде строк является использование IMEX extended property в вашей connection string например:

     Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx; Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1"; 

    Установка IMEX на 1 делает ADO обрабатывать все столбцы как текст, как указано на следующей странице ConnectionStrings :

    Используйте этот параметр [IMEX = 1], если вы хотите обрабатывать все данные в файле как текст, переопределяя тип столбца Excels «General», чтобы угадать, какой тип данных находится в столбце.

    Вы можете найти дополнительную информацию об имуществе IMEX в этом вопросе SO .

    Обновление : полевым типом данных, полученным с помощью этого ftWideString будет ftWideString .

    Давайте будем гением компьютера.