Аватар для sysrepos
88 / 81 / 31
Регистрация: 08.08.2013
Сообщений: 467
Записей в блоге: 1

Чтение таблицы Excel через OleDbConnection

12.12.2018, 16:24. Показов 4658. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Считываю таблицу Excel с помощью OleDbConnection.
Использую код, который нашел на просторах интернета.
Он считывает все данные с заданного листа.
Хотелось бы понять, как считать, например, нужный мне диапазон в заданном листе
Перепробовал различные варианты, на которые хватило фантазии, ничего не получилось.
Прошу подсказать, как в данном случае составить запрос, чтобы можно было получить заданный диапазон из таблицы Excel (например Range["A1:B2"] )
(если такое вообще возможно)
(во вложении проект и таблица для примера)

(данную задачу можно решить через Microsoft.Office.Interop.Excel, но интересует решение именно с использованием OleDbConnection)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
 
            string path = Directory.GetCurrentDirectory() + @"\таб.xlsx";
 
            DataTable dt = new DataTable();
            OleDbConnectionStringBuilder csbuilder = new OleDbConnectionStringBuilder();
            csbuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
            csbuilder.DataSource = path;
            csbuilder.Add("Extended Properties", "Excel 12.0 Xml;HDR=YES");
 
            using (OleDbConnection connection = new OleDbConnection(csbuilder.ConnectionString))
            {
 
                connection.Open();
                string selectSql;
                selectSql = @"SELECT * FROM [Sheet1$]";  //???
                //selectSql = @"SELECT * FROM [Sheet1$.Range[""A1:B2""]]";
                //selectSql = @"SELECT * FROM [Sheet1$.Range[A1:B2]]";
                //selectSql = @"SELECT * FROM [Sheet1$].[Range[A1:B2]]";
                //selectSql = @"SELECT * FROM [Sheet1$.Range[A1:B2]$]";
 
               
                using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectSql, connection))
                {
                    adapter.Fill(dt);
                    dataGridView1.DataSource = dt;
                }
                connection.Close();
            }
        }
Вложения
Тип файла: 7z q1.7z (33.0 Кб, 7 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2018, 16:24
Ответы с готовыми решениями:

Как сохранить исходные размеры таблицы Excel при копи/пасте через C#?
Есть таблица внутри книги Excel, которую нужно достать и поместить в другую книгу. При копи/пасте не сохраняются размеры столбцов и строк...

Импорт таблицы Excel в БД Access через VBA через кнопку в Excel
Форумчане, помогите, пожалуйста с кодом макроса в excel. Задача состоит в следующем:в файле обработчик через кнопку импортировать данные...

Excel: чтение в массив полей таблицы Excel?
Добрый день, появилась необходимость написать некий макрос, с VBA столкнулся впервые. Нагуглить внятный пример не получилось, может...

2
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
12.12.2018, 19:48
Лучший ответ Сообщение было отмечено sysrepos как решение

Решение

sysrepos,

У меня так работает нормально. Замените Лист1 на Sheet1

C#
1
sql = @"SELECT * FROM [Лист1$A1:B10]";
1
 Аватар для sysrepos
88 / 81 / 31
Регистрация: 08.08.2013
Сообщений: 467
Записей в блоге: 1
13.12.2018, 14:33  [ТС]
спасибо, в таблице именно Sheet1, все работает.

C#
1
selectSql = @"SELECT * FROM [Sheet1$A1:B10]";
доллар вместо точки, сам бы никогда не догадался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2018, 14:33
Помогаю со студенческими работами здесь

Чтение значений из таблицы Excel
Нужно брать значения из таблицы. (Таблица должна быть визуально читабельна и легко редактируемой. CSV - плохо читабельный, поэтому не...

Чтение значений из таблицы Excel
Приношу всем извинения. Тема: https://www.cyberforum.ru/cmd-bat/thread1809852.html У Вас такая задача должна решаться просто. (работа с...

Чтение таблицы из Excel в Word
Здравствуйте помогите в написании кода , нужно из Excel допустим из диапазона (E61:I72) скопировать таблицу в word Добавлено через 17...

LabXL. Некорректное чтение таблицы Excel
Приветствую, уважаемые формучане! Только начинаю свое знакомство с библиотекой LibXl на C++, и уже столкнулась с проблемой. Взят пример...

Чтение и обработка данных из таблицы excel
Всем привет, пишу курсовую, не могу найти (наверно плохо ищу) как в С# работать с данными из таблицы excel. Т.е из excel нужно вытащить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru