Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 14.09.07 16:48
Оценка:
Очень требуется помощь для начинающего. Срочно. Ситуация следующая.

Microsoft Visual C# 2005 Express Edition. Имеется код, запрашивающий из access'а и выводящий в datagridview данные, отсортированные в соответствии с введенными критериями (дата, имя филиала и т.п.). Колонок приблизительно 14.
Нужно создать кнопку, после нажатия которой данные из datagridview будут экспортироваться в excel, т.е. открывается excel, записыаются данные, excel остается открытым для просмотра.
Ну или можно каким-то образом в текстовый файл. Но предпочтительнее первое. Желательно не через консоль.

Просьба описать более-менее подробно, что и как. Приведите код, пожалуйста, если несложно.

Код следующий:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string data = textBox1.Text;
            string pryamie_prodaji = textBox2.Text;
            string mestnie_prodaji = textBox3.Text;
            string prodaji_cherez_filial = textBox4.Text;
            string pryamie_prodaji_cherez_filial = textBox5.Text;

            string str = "";
            if (data != "") { str += "(data='" + data+ "') "; }
            if (pryamie_prodaji != "") { str += "(pryamie_prodaji='" + pryamie_prodaji + "') "; }
            if (mestnie_prodaji != "") { str = str + "(mestnie_prodaji='" + mestnie_prodaji + "') "; }

            if (prodaji_cherez_filial != "") { str = str + "(prodaji_cherez_filial='" + prodaji_cherez_filial + "')"; }

            if (pryamie_prodaji_cherez_filial != "") { str = str + "(pryamie_prodaji_cherez_filial='" + pryamie_prodaji_cherez_filial + "')"; }

            if (str != "" && pryamie_prodaji_cherez_filial != "") { str = str + "pryamie_prodaji_cherez_filial=" + pryamie_prodaji_cherez_filial; }

            if (str != "" && pryamie_prodaji_cherez_filial == "")
            {
            }

            dannieBindingSource1.Filter = str;
            this.dannieTableAdapter1.Fill(this.db2DataSet1.dannie);
        }

 
        private void button2_Click(object sender, EventArgs e)
        {
        }
    }
}



Спасибо.

P.S. Сильно не бейте, если похожую тему не нашел или неправильно изъяснил...
Re: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.09.07 16:57
Оценка:
Здравствуйте, Drakon2517, Вы писали:

D>Очень требуется помощь для начинающего.


Ну раз для начинающего, то изучать все прелести Microsoft Ofice Interop Не советую. Проще всего записать файл в формате CSV и запустить его.
Форматирование ячейкам так, конечно,не задашь, но пишется это за пол-часа и как раз по силам начинающему.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 14.09.07 17:15
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Drakon2517, Вы писали:


D>>Очень требуется помощь для начинающего.


A>Ну раз для начинающего, то изучать все прелести Microsoft Ofice Interop Не советую. Проще всего записать файл в формате CSV и запустить его.

A>Форматирование ячейкам так, конечно,не задашь, но пишется это за пол-часа и как раз по силам начинающему.

Спасибо за совет, но хотелсоь все таки бы код в помощь, чтобы разобраться. Просто, я только-только начал, а времени не очень много...
Re[3]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.09.07 17:18
Оценка:
Здравствуйте, Drakon2517, Вы писали:

D>Здравствуйте, adontz, Вы писали:

D>Спасибо за совет, но хотелсоь все таки бы код в помощь, чтобы разобраться. Просто, я только-только начал, а времени не очень много...

CSV это Comma Separated Values.
Вот пример файла
1;a;12.11.2007
2;b;11.11.2007
3;c;13.09.2005
4;d;06.08.2002
5;e;05.06.2007
6;f;02.07.2001
7;g;08.09.2000
8;h;06.04.2002
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 14.09.07 17:22
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Drakon2517, Вы писали:


D>>Здравствуйте, adontz, Вы писали:

D>>Спасибо за совет, но хотелсоь все таки бы код в помощь, чтобы разобраться. Просто, я только-только начал, а времени не очень много...

A>CSV это Comma Separated Values.

A>Вот пример файла
A>
A>1;a;12.11.2007
A>2;b;11.11.2007
A>3;c;13.09.2005
A>4;d;06.08.2002
A>5;e;05.06.2007
A>6;f;02.07.2001
A>7;g;08.09.2000
A>8;h;06.04.2002
A>


Да, как выглядит cvs файл, я знаю. Я имел ввиду код с#...
Re[5]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.09.07 17:39
Оценка:
Здравствуйте, Drakon2517, Вы писали:

D>Да, как выглядит cvs файл, я знаю. Я имел ввиду код с#...


М-м-м. А какие проблемы с записью подобного файла?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 14.09.07 17:44
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Drakon2517, Вы писали:


D>>Да, как выглядит cvs файл, я знаю. Я имел ввиду код с#...


A>М-м-м. А какие проблемы с записью подобного файла?


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

private void button2_Click(object sender, EventArgs e)
        {
        }
Re[7]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.09.07 17:49
Оценка: +1
Здравствуйте, Drakon2517, Вы писали:

D>Ну проблемы в том, что я пока плохо разбираюсь в синтаксисе и функциях...

D>И в том, что не знаю, что писать в коде кнопки...

D>
D>private void button2_Click(object sender, EventArgs e)
D>        {
D>        }
D>


Ну академического образования форум не заменит. Почитай книжку по C#/.Net. И переименуй кнопку в _buttonSave, потому что культура программирования...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 14.09.07 18:09
Оценка: -1
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Drakon2517, Вы писали:


D>>Ну проблемы в том, что я пока плохо разбираюсь в синтаксисе и функциях...

D>>И в том, что не знаю, что писать в коде кнопки...

D>>
D>>private void button2_Click(object sender, EventArgs e)
D>>        {
D>>        }
D>>


A>Ну академического образования форум не заменит. Почитай книжку по C#/.Net. И переименуй кнопку в _buttonSave, потому что культура программирования...


Я и не пытаюсь получить здесь академическое образование. Пытаюсь получить то же, что и все, как мне думается... Но, к сожалению, пока помощи не получаю...
Пустой разговор.
Re: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 06:58
Оценка:
Здравствуйте, Drakon2517, Вы писали:

D>Очень требуется помощь для начинающего. Ситуация следующая.


D>Microsoft Visual C# 2005 Express Edition. Имеется код, запрашивающий из access'а и выводящий в datagridview данные, отсортированные в соответствии с введенными критериями (дата, имя филиала и т.п.). Колонок приблизительно 14.

D>Нужно создать кнопку, после нажатия которой данные из datagridview будут экспортироваться в excel, т.е. открывается excel, записыаются данные, excel остается открытым для просмотра.
D>Ну или можно каким-то образом в текстовый файл. Но предпочтительнее первое. Желательно не через консоль.

D>Просьба описать более-менее подробно, что и как. Приведите код, пожалуйста, если несложно.


Вопрос актуален. Может кто знает его решение?
Re[9]: Из DataGridView выгрузить в Excel
От: Igor Sukhov  
Дата: 16.09.07 07:11
Оценка:
Здравствуйте, Drakon2517, Вы писали:

A>>Ну академического образования форум не заменит. Почитай книжку по C#/.Net. И переименуй кнопку в _buttonSave, потому что культура программирования...


D>Я и не пытаюсь получить здесь академическое образование. Пытаюсь получить то же, что и все, как мне думается... Но, к сожалению, пока помощи не получаю...


То что ты просишь — это не помощь, это сделать за тебя все:. Помочь тут многим интересно — а вот делать за тебя твою работу будет интересно очень немногим.

Если создать CSV файл пока сложно — то вот другое просто решение — (1) выделяешь ячейки с данными в DataGridView и (2) копируешь эти данные в буфер обмена. (3) В Excel нажимаешь кнопку "Вставить/Paste" (CTRL+v) и данные оказываются там где нужно.
* thriving in a production environment *
Re: Из DataGridView выгрузить в Excel
От: nikov США http://www.linkedin.com/in/nikov
Дата: 16.09.07 07:47
Оценка: 1 (1)
Здравствуйте, Drakon2517, Вы писали:

D>
D>            string pryamie_prodaji_cherez_filial = textBox5.Text;
D>


А Вы знаете о том, что в C# можно использовать русские буквы в идентификаторах? Раз уж Вы все равно называете их по-русски...
Re[10]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 08:01
Оценка: -2
Здравствуйте, Igor Sukhov, Вы писали:

IS>Здравствуйте, Drakon2517, Вы писали:


A>>>Ну академического образования форум не заменит. Почитай книжку по C#/.Net. И переименуй кнопку в _buttonSave, потому что культура программирования...


D>>Я и не пытаюсь получить здесь академическое образование. Пытаюсь получить то же, что и все, как мне думается... Но, к сожалению, пока помощи не получаю...


IS>То что ты просишь — это не помощь, это сделать за тебя все:. Помочь тут многим интересно — а вот делать за тебя твою работу будет интересно очень немногим.


Да нет, всего я не прошу сделать. Помощь у вас заключается в том, чтобы просто поумничать, побеседовать теоретически и довольно абстрактно... Как мне думается, получить такую помощь хочется очень немногим. Вот яркий пример. Из 5-ти сообщений ни одного дельного совета. Разговоры ни о чем. Ни одной строчки кода в качестве примера — я не думаю, что это действительно знающему человеку сложно сделать...

IS>Если создать CSV файл пока сложно — то вот другое просто решение — (1) выделяешь ячейки с данными в DataGridView и (2) копируешь эти данные в буфер обмена. (3) В Excel нажимаешь кнопку "Вставить/Paste" (CTRL+v) и данные оказываются там где нужно.


Умный?
Юмор?
Re[2]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 08:06
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Drakon2517, Вы писали:


D>>
D>>            string pryamie_prodaji_cherez_filial = textBox5.Text;
D>>


N>А Вы знаете о том, что в C# можно использовать русские буквы в идентификаторах? Раз уж Вы все равно называете их по-русски...


Нет, но спасибо , хоть проблема и не в этом...
Re[11]: Из DataGridView выгрузить в Excel
От: Igor Sukhov  
Дата: 16.09.07 08:33
Оценка:
Здравствуйте, Drakon2517, Вы писали:

IS>>То что ты просишь — это не помощь, это сделать за тебя все:. Помочь тут многим интересно — а вот делать за тебя твою работу будет интересно очень немногим.


D>Да нет, всего я не прошу сделать. Помощь у вас заключается в том, чтобы просто поумничать, побеседовать теоретически и довольно абстрактно... Как мне думается, получить такую помощь хочется очень немногим. Вот яркий пример. Из 5-ти сообщений ни одного дельного совета. Разговоры ни о чем. Ни одной строчки кода в качестве примера — я не думаю, что это действительно знающему человеку сложно сделать...


Тебе уже помогли — несколько человек подсказали как минимум три примера как это сделать — напрямую через Interop, загружая CSV файл с даными или через буфер обмена. Вместо того чтобы попробывать тебе предложенное, ты пытаешься нам доказать что это не помощь — что помощь — это строчки кода.

IS>>Если создать CSV файл пока сложно — то вот другое просто решение — (1) выделяешь ячейки с данными в DataGridView и (2) копируешь эти данные в буфер обмена. (3) В Excel нажимаешь кнопку "Вставить/Paste" (CTRL+v) и данные оказываются там где нужно.


D>Умный?

Я? Да!

D>Юмор?

Это не юмор — это работающее решение. Мои образчики юмора можно найти в форуме "Коллеги улыбнитесь".

D>

Убедительно прошу — обойтись без пальцев.

ps: Цитируйте пожалуйста экономнее — сообщение собеседника полностью включать свой ответ не следует.
* thriving in a production environment *
Re[11]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.09.07 11:03
Оценка:
Здравствуйте, Drakon2517, Вы писали:

D>Да нет, всего я не прошу сделать. Помощь у вас заключается в том, чтобы просто поумничать, побеседовать теоретически и довольно абстрактно... Как мне думается, получить такую помощь хочется очень немногим. Вот яркий пример. Из 5-ти сообщений ни одного дельного совета. Разговоры ни о чем. Ни одной строчки кода в качестве примера — я не думаю, что это действительно знающему человеку сложно сделать...


А ты вообще почитай форум и посмотри сколько строчек кода встречается в полезных ответах.
А ещё почитай http://www.rsdn.ru/Info/Howtoask.xml
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Из DataGridView выгрузить в Excel
От: x1 http://www.agpage.ru
Дата: 16.09.07 11:07
Оценка: 3 (1)
Вот код функции, осуществляющей экспорт в моем проекте

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop;
using System.Threading;

        public void ExportToExcel()
        {
            ApplicationClass Excel = new ApplicationClass();
            XlReferenceStyle RefStyle = Excel.ReferenceStyle;
            Excel.Visible = true;
            Workbook wb = null;
            String TemplatePath = System.Windows.Forms.Application.StartupPath + @"\Экспорт данных.xlt";
            try
            {
                wb = Excel.Workbooks.Add(TemplatePath); // !!! 
            }
            catch (System.Exception ex) { throw new Exception("Не удалось загрузить шаблон для экспорта " + TemplatePath); }
            Worksheet ws = wb.Worksheets.get_Item(1) as Worksheet ;
            for (int j = 0; j < GridView.Columns.Count; ++j)
            {
                (ws.Cells[1, j + 1] as Range).Value2 = GridView.Columns[j].HeaderText;
                for (int i = 0; i < GridView.Rows.Count; ++i) {
                    object Val = GridView.Rows[i].Cells[j].Value;
                    if (Val != null)
                        (ws.Cells[i + 2, j + 1] as Range).Value2 = Val.ToString();
                }
            }
            Excel.ReferenceStyle = RefStyle;
            ReleaseExcel(Excel as Object);
        }

        private void ReleaseExcel(object excel)
        {
            // Уничтожение объекта Excel.
            Marshal.ReleaseComObject(excel);
            // Вызываем сборщик мусора для немедленной очистки памяти
            GC.GetTotalMemory(true);        
        }
Re[12]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 18:11
Оценка:
Здравствуйте, adontz, Вы писали:

A>А ты вообще почитай форум и посмотри сколько строчек кода встречается в полезных ответах.

Читал. Нашел достаточно. Полезность бывает и разная для каждого, а не только для всех одинаковая...

A>А ещё почитай http://www.rsdn.ru/Info/Howtoask.xml

Читал. Правильно, хотя местами нудно... Но не в тех, которых тебе может показаться...
Re[13]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.09.07 18:26
Оценка: :)
Здравствуйте, Drakon2517, Вы писали:

D>Но не в тех, которых тебе может показаться...


Откуда тебе знать, что мне кажется?

Пpишел мужик на пляж. Hаpоду — никого. Разделся догола и поплыл. Hакупался, подплывает к беpегу, а возле его белья девушка сидит и книгу читает. Что делать? Hыpнул он опять в воду. Смотpит, на дне тазик лежит. Взял он его, загоpодил пеpед и подошел к девушке:
— Здpавствуй, пpекpасная девушка!
— Здpавствуйте.
— Что делаем?
— Да вот, книгу читаю, — отвечает она.
— А пpо что книга?
— Да как мысли угадывать.
— А что сейчас я думаю? — спpашивает он.
— Вы думаете, что у тазика есть дно.

A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Из DataGridView выгрузить в Excel
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.09.07 18:27
Оценка:
Здравствуйте, x1, Вы писали:

x1> private void ReleaseExcel(object excel)

x1> {
x1> // Уничтожение объекта Excel.
x1> Marshal.ReleaseComObject(excel);
x1> // Вызываем сборщик мусора для немедленной очистки памяти
x1> GC.GetTotalMemory(true);
x1> }

Похоже на грязный хак
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[12]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 18:49
Оценка:
Здравствуйте, Igor Sukhov, Вы писали:

IS>Тебе уже помогли — несколько человек подсказали как минимум три примера как это сделать — напрямую через Interop, загружая CSV файл с даными или через буфер обмена. Вместо того чтобы попробывать тебе предложенное, ты пытаешься нам доказать что это не помощь — что помощь — это строчки кода.


Попробовать мне предложенное я могу в том случае, если я предполагаю как. Но поскольку я указал, что начинающий и поскольку обратился сюда, вероятно, что вряд ли.
Про твой буфер обмена... Может ты и читал... "Нужно создать кнопку"... Ну, да ладно...
"Вам" я не собирался и не собираюсь ничего доказывать. Не вижу в этом смысла.

D>>Умный?

IS>Я? Да!
Это был риторический вопрос, в ответ на который у меня есть свое мнение

D>>Юмор?

IS>Это не юмор — это работающее решение. Мои образчики юмора можно найти в форуме "Коллеги улыбнитесь".
Не думаю, что там что-то стоящее.

D>>

IS> Убедительно прошу — обойтись без пальцев.
К чему они здесь тогда? Есть? Значит, могу и с ними.

IS>ps: Цитируйте пожалуйста экономнее — сообщение собеседника полностью включать свой ответ не следует.

OK.
Re[14]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 18:55
Оценка:
Здравствуйте, adontz, Вы писали:

A>Откуда тебе знать, что мне кажется?


"Может показаться"! А не "кажется"... Мне не знать, поэтому я лишь предполагаю
Re[2]: Из DataGridView выгрузить в Excel
От: nejest Беларусь  
Дата: 16.09.07 18:55
Оценка: 1 (1)
Здравствуйте, Drakon2517, Вы писали:
D>>Просьба описать более-менее подробно, что и как. Приведите код, пожалуйста, если несложно.

D>Вопрос актуален. Может кто знает его решение?


Если вам нужен готовый код, то вам наверное нужно купить( или скачать) книгу C#. Сборник рецептов. Агуров П.В. В ней есть примеры практически на все случаи жизни, даже и про эксель примеры есть...
P.S. А поисковики помогли бы, через минуту поиска Яндекс мне выдал например такую ссылку
Автор(ы): Гасанов Ровшан Закариевич
Дата: 17.11.2005
Статья рассказывает о динамическом взаимодействии с Excel посредством OLE Automation и рефлексии.
Требуется знание С#.
Re[2]: Из DataGridView выгрузить в Excel
От: Drakon2517  
Дата: 16.09.07 19:08
Оценка:
Здравствуйте, x1, Вы писали:

x1>Вот код функции, осуществляющей экспорт в моем проекте


Премного благодарен! Очень помогло.
Сначала были ошибки с Interop'ом с привязкой библиотеки.
Потом заменил
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop;

на
using Excel;

... и так кое-где подправил.
Все заработало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.