Как запретить OleDbDataReader.ExecuteReader автоматически добавлять целые числа к дублирующимся значениям столбцов - PullRequest
1 голос
/ 30 августа 2011

Я пытаюсь импортировать данные из электронной таблицы Excel (xls).Мне нужно выдать ошибку, если в строке заголовка появляются повторяющиеся значения.Я использую OleDbDataReader для загрузки данных листа.У меня проблема в том, что .Net добавляет уникальное целое число в конец дубликатов столбцов, чтобы все значения были уникальными.

Значения заголовка будут неизвестны во время выполнения.Если найдены повторяющиеся значения заголовка, обработка файла должна быть остановлена.

Например, электронная таблица со следующими заголовками: Марка, Модель, Год, Марка будет выглядеть как: Марка, Модель, Год, Марка1

Вот некоторый код:

           string selectString = "Select * from $Sheet1";
           xlConnection = new OleDbConnection(connectionString);
           OleDbCommand cmd = new OleDbCommand(selectString, xlConnection); 
           OleDbDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                for (int fieldIndex = 0; fieldIndex < reader.FieldCount; fieldIndex++)
                {
                    string columnValue = reader.GetName(fieldIndex);
                }
            }

GetName возвращает Make, Model, Year, Make1

Есть ли способ предотвратить такое поведение?

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Попробуйте использовать:

  string selectString = "Select Make, Model, Year from $Sheet1";

вместо:

  string selectString = "Select * from $Sheet1";
0 голосов
/ 03 сентября 2014

У меня было такое же требование и я столкнулся с той же проблемой.

Я решил это, изменив строку подключения, чтобы установить HDR = NO.Затем выберите первую строку и прокрутите значения в каждом столбце, чтобы проверить уникальность.Если я нашел совпадение, я выдал DuplicatNameException, чтобы он соответствовал DataTable.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...