C#: Как считать документ *.XLS, чтобы все столбцы были типа string?

Компьютеры программирование windows C# .net

Проблема в том, что пи считывании таблицы с помощью OleDbDataAdapter, в полученном DataTable столбцам произвольно указывается тип, хотя в документе *.xls все ячейки либо общего, либо текстового типа, а из-за этого таблица заполняется с ошибками (в некоторых столбцах не пописываются заголовки)

Куски кода:
ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=\"Excel 8.0; HDR=NO\"; Data Source={0}", inputFile);

OleDbConnection dbConnect = new OleDbConnection(ConnectionString);
dbConnect.Open();

// Получаем список листов в файле
DataTable schemaTable = dbConnect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

string SQLQuery = String.Format("SELECT * FROM [{0}]", sheet);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(SQLQuery, dbConnect);
DataTable dataTable = new DataTable();

// Создаём каркас для будущей dataTable
dataAdapter.FillLoadOption = LoadOption.PreserveChanges;
dataAdapter.Fill(dataTable);


Когда считываю тот же файл (копию) с расширением *.xlsx - проблем нет, а разница всего то в строке подключения.
Есть ли возможность задать какие-то правила для DataAdapter или создать SQL-запрос, чтобы выводились все значения в текстовом виде?

Примечание:
Так ф том то и дело, что после чтения файла я уже лишаюсь нескольких заголовков из-за фоматирования. Надо бы как-то решить эту проблему во время чтения, может какие-то павила задать и т.п. Я новичёк в C#

Примечание:
РЕШЕНО!!!

Всего-то стоило добавить в строку подключения IMEX=1, тогда все значения будут считываться как String:

ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=\"Excel 8.0; HDR=NO; IMEX=1\"; Data Source={0}", inputFile);
Ответы:
XLS представляет собой бинарник, т.е. при чтении из файла используются различные структуры с полями разных типов: byte, short, word и т.д., поэтому и указывается тип.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.