none
Вывод отчета из DataGridView в Ecxel RRS feed

  • Вопрос

  • Добрый день)

    Подскажите пожалуйста, как экспортировать все данные, отображаемые в  DataGridView, включая названия столбцов, в Ecxel? И как сделать, чтобы можно было выбирать, какие столбцы нужно выводить в отчет?

Ответы

  • Alexandr Gashper вы немного не правы. Тут помогут в любом случае, дадут ответ по мере возможности, но nutakov вам тоже стоит быть внимательнее. В ссылке что вам дал Alexandr есть ответ на ваш вопрос, просто нужно немного подкорректировать код. Например вот в этом блоке

    for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
    {
        ExcelApp.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
    }

    цикл проходит по вашим колонкам и берет их названия для помещения в первую строку таблицы. Вам нужно просто проделать эту операцию не для всех колонок, а только для нужных (например задав внутри цикла условие), а ниже это учесть при заполнении данными..

    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
    {
        for (int j = 0; j < dataGridView1.Columns.Count; j++)
        {
            ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
        }
    }

    то есть во внутреннем цикле проходить по тем же колонкам, что вы добавляли ранее.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа nutakov 16 мая 2012 г. 0:58
    Отвечающий

Все ответы

  • Добрый день.

    Export DataGridView to Excel in C# - всё подробно описано, по шагам, с кодом.

    • Помечено в качестве ответа nutakov 14 мая 2012 г. 9:56
    • Снята пометка об ответе nutakov 14 мая 2012 г. 9:56
    • Предложено в качестве ответа YatajgaModerator 14 мая 2012 г. 9:58
  • Спасибо) 

    А как можно сделать, чтобы можно было выбирать столбцы, которые можно вывести?

  • Создавайте свою форму выбора столбцов в любом удобном вам виде :)
  • Код в студию ;)
  • А самостоятельно мозг включить, никак?
  • Спасибо капитан;) если бы я знала как это делать, я бы не создавала тут тему..
  • На здоровье рядовой, вашу работу или задания в учебном заведении за вас никто делать не будет.
    Тут помогают людям решать проблемы, возникающие в процессе их труда над той или иной задачей.
  • Alexandr Gashper вы немного не правы. Тут помогут в любом случае, дадут ответ по мере возможности, но nutakov вам тоже стоит быть внимательнее. В ссылке что вам дал Alexandr есть ответ на ваш вопрос, просто нужно немного подкорректировать код. Например вот в этом блоке

    for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
    {
        ExcelApp.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
    }

    цикл проходит по вашим колонкам и берет их названия для помещения в первую строку таблицы. Вам нужно просто проделать эту операцию не для всех колонок, а только для нужных (например задав внутри цикла условие), а ниже это учесть при заполнении данными..

    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
    {
        for (int j = 0; j < dataGridView1.Columns.Count; j++)
        {
            ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
        }
    }

    то есть во внутреннем цикле проходить по тем же колонкам, что вы добавляли ранее.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа nutakov 16 мая 2012 г. 0:58
    Отвечающий
  • Спасибо)) сделала)