Урок по C# - Экспорт из DataGridView в Excel
ฝัง
- เผยแพร่เมื่อ 24 มิ.ย. 2020
- Всем привет! продолжаем наши уроки по C# + mySQL и сегодня мы будем выгружать данные из DataGridView в Excel нажатием одной (двух) кнопок! :) Иногда просто требуется реализовать экспорт в Excel из C# проекта. Да и Excel есть практически на любом компьютере, а если ваш софт ещё и занимается подключением к бд для вытаскивания нужной инфы?? В общем экспорт сделать на самом деле не сложно, достаточно посмотреть это видео которое научит вас делать экспорт из c# в excel при условиях, что вы заранее не знаете сколько будет у вас строк и столбцов!
Приятного просмотра, обязательно лайк поставь и подпишись на канал,если ещё не подписан )
Всякие ссылки:
Группа в вк 👉🏻 zvdkit
Группа в вк игровая 👉🏻 zvdkgames
Конкурс 👉🏻 zvdkgames?w=wall-11594...
Игровой канал 👉🏻 / @zombievdkgames
Проект из урока👇🏻
drive.google.com/file/d/15Ejn...
Другие интересные видео👇🏻
👉🏻 Кто удалил файлы с сервера. Настройка политик, MySQL + Программа WDMF ( ͡° ͜ʖ ͡°) • Кто удалил файлы с сер...
👉🏻 Урок по C# - ПОДКЛЮЧЕНИЕ К БД MySQL ЧЕРЕЗ C# 👨💻 • Урок по C# - ПОДКЛЮЧЕН...
👉🏻 Урок по C# - ЗАПРОС К БД MySQL. ВЫВОД ДАННЫХ В DATAGRIDVIEW. СКРИПТ ИЗ RICHTEXTBOX • Урок по C# - ЗАПРОС К ...
👉🏻 Улучшение звука для стримов. Фильтры в OBS. Дорогой и дешевый микрофон. Лучшие фильтры в OBS! • Улучшение звука для ст...
вышла вторая часть урока с некоторыми дополнениями:
th-cam.com/video/WudCnkg80Ps/w-d-xo.html
Привет такой вопрос, мне нужно чтобы данные с интерфейса на C# выгружались в excel с обработкой, нужно чтобы был, Счетчик и нахождение среднего, это реально реализовать, сейчас он у меня выводит данные в excel может по дням, неделям, месяцам, но нужно чтобы бала сортировка под каждой машиной например за день выходила строчка с нахождением сколько было сделано рейсов и и в черырёх колонках находилась среднее значение. Это реально реализовать? у меня просто уже мозги текут
Господи, Мужик! Ты спас мой анус от взрыва. На официальном сайте нашёл пример кода на дох*я строк и тот не запустился.
А судя по твоему видосу стало понятно, что дело в Excel, точнее в его отсутствии, ну и сократил код до 10 строчек😁😁😁
Подписка. В нужный момент очень помог этим тутором.
Лучший! Спасибо.
Ай молодца)))
Спасибо большое
Выручил очень сильно первым и вторым роликом. Огромное спасибо!
Только у меня выводилась одна строка из двух. Последняя строка "съедается".
Надо было поменять "2" на "1" в строке:
for (i = 0; i
for (j = 0; j < dataGridView1.ColumnCount; j++) мне помогло
👍👍👍
Спасибо большое! Очень помог (Я чайник)
я тоже 🐱👤
А как передать цвет ячеек из документа Excel в таблицу DataGridView C# ? Помогите пожалуйста решить эту задачу ! Спасибо ! ! !
Я работою через WPF, вылезает ошибка: "Не удается применить индексирование через [] к выражению типа "DataGrid".", не знаю как ее исправить...
Заранее спасибо.
Wpf значительно отличается от winforms
Здарова, у меня вместо нормальных данных записанных в таблице выводится что то не понятное. Как это пофиксить, во всех столбцах вот эта шляпа(DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=1 })
Та же проблема, не могу разобраться(
Спасибо, бро. Помог, все исправил)
Теперь все тоже работает))))
При выполнении кода, excel файл появляется по счёту 17-ым (т.е. Книга 17). А когда захожу в диспетчер задач, там уже висят остальные 16 книг excel и приходиться убирать их вручную.
Как это исправить?
Значит где то у тебя кривой цикл который создаёт лишние копии Excel
@@zombievdkofficial Спасибо за быстрый ответ, но я уже пофиксил ошибку
@@KiLLaTeA :)
Як зробити так щоб середня колонка не виводилась?
Почему то у меня не работает код, хотя сделала все в точности. на строке wsh.Cells[i + 1, j + 1] = dataGridView1[j, i].Value.ToString(); выходит ошибка System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." Как можно пофиксить?
Значит какой то аргумент нулевой вот и ошибка лезет.
в описании к видео есть ссылка на проект, можешь его скачать и посмотреть, возможно станет понятнее :)
Как сохранять заголовки столбцов?
Если делали по проекту из видоса, то достаточно в цикл экспорта в excel добавить строчку:
wsh.Cells[1, j + 1] = dgv.Columns[j].HeaderText.ToString();
добавляется в цикл for и первая строчка файла excel будет заполнена именами столбцов из DataGridView
Можно ли выгрузить с названием столбцов?
Скорее всего можно, но как это сделать не смогу подсказать )
Если кому нужны будут еще и названия столбцов, то welcome :)
private void button6_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
Microsoft.Office.Interop.Excel.Application exApp = new Microsoft.Office.Interop.Excel.Application();
exApp.Workbooks.Add();
Microsoft.Office.Interop.Excel.Worksheet wsh = (Microsoft.Office.Interop.Excel.Worksheet)exApp.ActiveSheet;
int i, j;
for (i = 0; i
@@zickc246 есть более изящный способ, недавно сделал. Твой вариант подразумевает статичные имена стоблцов, я предлагаю вариант для динамичных данных )
private void button6_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
Microsoft.Office.Interop.Excel.Application exApp = new Microsoft.Office.Interop.Excel.Application();
exApp.Workbooks.Add();
Microsoft.Office.Interop.Excel.Worksheet wsh = (Microsoft.Office.Interop.Excel.Worksheet)exApp.ActiveSheet;
int i, j;
for (i = 0; i
Все круто, но мелко
почему у меня ничего в поиске не находит по запросу Microsoft.Office? просто пусто
попробуй конкретно в "Обзор" зайти и по компьютеру поискать. У меня только так нашло эту либу.
Выдает ошибку System.IO.FileNotFoundException: "Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. Не удается найти указанный файл."
Как фиксить?
Очевидно не хватает ссылок на сборку от офиса) добавлять в проект через references
@@zombievdkofficial Прикольно, что у меня пропал список ссылок. Есть только зависимости, в котором COM
@@Quarantinevlr смог пофиксить?
@@strangersailor3287 неа, тупо пропал список ссылок
Приветствую автор, не надеюсь, что ты сможешь помочь, но все же решил попробовать. В общем, мне визуалка выкидывает ошибку на моменте, где мы в цикле присваиваем значение datagridview worksheet'у, System.NullReferenceException: "Object reference not set to an instance of an object." System.Windows.Forms.DataGridViewCell.Value.get вернул null. все сделал в точности как у тебя, но почему-то не работает(
Где то из таблицы летит null а то время как его не ждут. Пустые графы в строчках есть? По хорошему налог обработать получение нуля и что то сделать)
Делала через DataTable и выскакивает эта ошибка : System.InvalidCastException: "Невозможно привести COM-объект типа "Microsoft.Office.Interop.Excel.ApplicationClass" к интерфейсному типу "Microsoft.Office.Interop.Excel._Application". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{000208D5-0000-0000-C000-000000000046}" возвратил следующую ошибку: Ошибка при загрузке библиотеки. (Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))." ни разу такой не видела даже не знаю что делать
может это даст ответы. ru.stackoverflow.com/questions/818471/%D0%9D%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%81%D1%82%D0%B8-com-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-%D1%82%D0%B8%D0%BF%D0%B0-microsoft-office-interop-word-applicationcla
а как добавить в заготовленные столбцы?
прописать каждый столбец отдельно и заполнять строки, но зачем это надо? суть механизма в том, чтоб из программы выгрузить данные которые могут быть рандомными в новый файл, а не в существующий
@@zombievdkofficial на тот случай, когда нужно в существующий файл выгрузить )
@@Blastpv мне такое не требовалось, поэтому даже не пробовал, чисто в теории можно. Называешь столбцы и начинаешь заполнять циклом не с 1 ячейки, а со 2,например. Но либо должен быть стандарт такого файла либо как-то считывать его через C#, но это уже совсем другая история )
@@zombievdkofficial спасибо. Попробую)
Interop.Excel это полная шляпа, которая к тому же требует обязательно установленного офиса на ПК ну и плюс, глюки, мега медленная скорость работы с ячейками (особенно если нужно выгружать больше 10-20к строк и 10-20 столбцов в файл) потому то нормальные люди не юзают Interop априори...)))
Альтернатива для выгрузки в Excel?
System.MissingMemberException: "Ошибка при вызове "[PROPERTYGET, DISPID(0)]"."
что-то где-то потеряли или не указали. попробуйте гуглить по ошибке, возможно найдется решение на ошибку
@@zombievdkofficial уже пофиксили. Немного другим способом экспорт сделали)