Проблема в том, что пи считывании таблицы с помощью 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);
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.