|
25 / 24 / 13
Регистрация: 04.07.2012
Сообщений: 463
|
|
.NET 4.x Импорт Excel в dataGridView с progressBar15.09.2012, 19:30. Показов 3685. Ответов 7
Метки нет (Все метки)
Всем привет!!!! Подскажите пожалуйста, как реализовать задуманное. Импортирую большой файл Excel в dataGridView. Это занимает минуты 2. Как подключить progressBar к импорту?
0
|
|
| 15.09.2012, 19:30 | |
|
Ответы с готовыми решениями:
7
Импорт из Excel в datagridview Импорт из Excel в dataGridView Импорт из Excel в datagridview |
|
0 / 0 / 2
Регистрация: 18.09.2016
Сообщений: 110
|
|
| 24.01.2018, 04:18 | |
|
тоже интересует
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
| 24.01.2018, 11:55 | ||||||
|
методов много, попробуйте такой
0
|
||||||
|
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
|
|
| 24.01.2018, 15:42 | |
|
Pavel55, Есть подозрение, что проблема не в загрузке файла в таблицу, а определении оставшегося времени для отображения прогресса выполнения.
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||||||||||||
| 24.01.2018, 18:49 | ||||||||||||||||
|
hoolygan, есть подозрение, что ТС что-то делает не так. Если ТС забирает данными из Excel в цикле по ячейкам, типа
А вот если вы Вариант 1 - забираете данные с листа Excel одной строкой в двумерный массив и потом его загружаете в DGV, как пример
и уже этот массив arrData выгружаете в DGV Вариант 2 - забираете данные с листа Excel через Provider=Microsoft.ACE.OLEDB.12.0 и запрос SELECT * FROM то будет достаточно быстро и не нужен будет ProgressBar. Зачем вам ProgressBar, если данные загружаются в DGV, например, 3 секунды? Просто хотелось бы узнать, каким способом данные забираются с листа Excel и какое количество строк и столбцов у ТС. А если касаться ProgressBar, то посчитайте общее кол-во строк в Excel, это будет 100% и при вставке данных в DGV высчитывайте процент и инкриминируйте ProgressBar Вот код. Он затрачивает на моём слабом компьютере 4,3 секунды для загрузки из Excel 10 столбцов и 100.000 строк в DGV. А для загрузки 1 млн строк уже нужно 45 секунд. Но если у вас 1 млн строк и более, то вам нужно переходить на базы данных ТС пишет, что у него загружаются данные около 2-х минут. Если использовать мой код, то у вас в Excel файле должно быть 2,7 млн строк. using System; using System.Diagnostics; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using System.Data;
0
|
||||||||||||||||
|
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
|
|
| 25.01.2018, 09:40 | |
|
Pavel55, не совсем согласен )
1. при использовании DataSource на гриде - с довольно большим объемом данных - UI всё равно заглохнет, у меня глохло на почти 10 сек при > 500 000 строк с 6 полями (ssd + core i5 + 8 гиг оперативки). 2. Даже при получении общего количества строк через OleDB - мы никак не сможем узнать время выполнения запроса select из excel - поэтому не выведем прогресс-бар правильно. Я к чему - для себя решил это дело использованием обыкновенной крутилки - т.е. прогресс-бар крутится сам по себе, дошел до 100 -> сброс в 0 и опять до 100. Пользователю понятно, что что-то происходит, а я не заморачивался с вычислением времени ожидания.
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
| 25.01.2018, 12:22 | ||||||
|
hoolygan, это легко сделать через массив по первому моему предложенному варианту через массив. Тут мы знаем границы массива и в цикле вставлять данные в DGV и можно прикрутить ProgressBar.
Вот кому надо с ProgressBar. Как видно из замеров времени он значительно увеличивает время загрузки данных в DGV. Я тестировал на 100.000 строк. С ProgressBar - 38 секунд, без ProgressBar - 7 секунд using System; using System.Diagnostics; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using System.Data;
0
|
||||||
| 25.01.2018, 12:31 | |
|
Не по теме: Pavel55, ну всё, подписал приговор. Следующим шагом будет реализовать это всё в отдельном потоке, чтобы "ну это же быстрее" :D
0
|
|
| 25.01.2018, 12:31 | |
|
Помогаю со студенческими работами здесь
8
Импорт данных из excel в DataGridView Импорт данных из Excel в DataGridView Импорт из таблицы Excel в DataGridView
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|