Laden...

DataGrid in Excel anzeigen lassen

Erstellt von apollo vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.925 Views
A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren
DataGrid in Excel anzeigen lassen

Hallo zusammen,

ich habe mich schon im gesamten Internet umgeschaut, aber nie was gefunden, was meiner folgenden Frage entspricht.

Ich arbeite mit C# Visualstudio 2005 in .NET.

Ich habe ein DataGridView, welches ich mit Daten aus einer Datenbank gefüllt habe, wechseln also ständig, je nachdem welche Abfrage ich abschicke.

Jetzt möchte ich dieses DataGrid in Excel anzeigen lassen, danach sollte es auch aus meiner Windows Anwendung speicherbar sein und ich sollte es drucken können.

Verweise habe ich schon hinzugefügt (Excel 11.0).

Nun soll auf einen Button_Klick das DataGrid in einer Excel Datei angezeigt werden.
Kann mir jemand dabei helfen bzw. mir sagen wie das geht?

Ich bedanke mich schon jetzt bei Euch!

gruß apollo

2.223 Beiträge seit 2005
vor 17 Jahren

moin und Herzlich willkommen,

  1. haste schonmal die Forum suche benutzt ? (schon oft diskutiert)
  2. Google / MSDN befragt
  3. Es vileicht mal selber versucht ?

es ist nicht schwer aber du solltest es erstmal alleine versuchen zu lösen sonst lernst du es nie

mfg

A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren

ja schon alles versucht, msdn ist eh nicht so dolle, forum suche hat -wie ich oben sagte- keine passenden Ergebnisse geliefert!

also versuche ich es jetzt nochmal!

484 Beiträge seit 2006
vor 17 Jahren

Original von apollo
msdn ist eh nicht so dolle

Da bleibt mir fast die Spucke weg 8o

Ich frag mich manchmal "Mit welchen Suchbegriffen sucht ihr denn?"

Jörg

A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren

kurze Kritik: Anstatt hier rumzuspamen bitte einfach die Lösung hier posten. Ich habe in der Suche nichts gefunden, wenn jemand etwas gefunden hat kann er das auch hier posten oder den richtigen Link dazu hier rein.

danke

484 Beiträge seit 2006
vor 17 Jahren

Original von apollo
kurze Kritik: Anstatt hier rumzuspamen bitte einfach die Lösung hier posten.
danke

http://www.google.de/search?hl=de&q=%22DataGridView+To+Excel%22&btnG=Suche&meta=

ergibt 230 Treffer u.a. auch von der MSDN

Was glaubst Du eigentlich, dass wir Dir die Arbeit abnehmen.

Los programmiert mir die Lösung oder wie.

Immer schön locker bleiben.

Jörg

A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren

Alles schön und gut, aber ich weiss wie ich suchbegriffe eingeben muss.
bin die schon alle einmal durchgegangen, siehe ersten post ::::

Ergebnisse:
Nur ASP.net, DataSets usw...

Nochmal:
Ich fülle die Daten manuell, indem ich einen Select in meiner Anwendung abschicke. Hier mal den Code in Kurzformat:


foreach (String sub in name.Split(Array))
                        {
                            output.Columns.Add(sub, sub);
                            output.Columns[Column_Count].Width = 200;
                            Column_Count = Column_Count + 1;
                        }
                        Column_Count = Column_Count - 1;

                        while (ASMSQL.sqlDataReader.Read())
                        {
                            output.Rows.Add();

                            for (int i = 0; i <= Column_Count; i++)
                            {
                                output.Rows[Row_Count].Cells[i].Value = ASMSQL.sqlDataReader.GetSqlValue(i).ToString();
                            }

                            Row_Count = Row_Count + 1;
}

es wird für jeden Spaltennamen eine Spalte im DataGrid zugefügt und für jeden Value eine Reihe bzw. Zelle eingefügt.

Ich habe also kein DataSet oder Sonstiges!

Ich hoffe dass man mir trotzdem noch mit produktiven Beiträgen helfen kann.

gruß apollo

484 Beiträge seit 2006
vor 17 Jahren

Also ich bin auf #3 der Suchergebnisse auf das gestossen.

Excel.ApplicationClass excel = new Excel.ApplicationClass();
   excel.Application.Workbooks.Add(true);
   DataTable table = ticketsList.Tables[0];
   int cIndex = 0;
   foreach(DataColumn col in table.Columns)
   {
    cIndex++;
    excel.Cells[1,cIndex]=col.ColumnName;
   }
   int rIndex=0;
   foreach(DataRow row in table.Rows)
   {
    rIndex++;
    cIndex=0;
    foreach(DataColumn col in table.Columns)
    {
     cIndex++;
     excel.Cells[rIndex+1,cIndex] = row[col.ColumnName].ToString();
    }
   }
   excel.Save("New.xls");

Schon mal nicht schlecht.

Und jetzt nimmst Du dein output Grid und gehts gemütlich durch die Columns
und Rows durch, packs die Werte in das Excel und fertig.

Jörg

A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren

tut mir leid, leider daneben.

ticketList bezeichnet ein DataSet, aber ich habe KEIN dataset, ich fülle manuell...

trotzdem danke...

484 Beiträge seit 2006
vor 17 Jahren

Original von joerguth
Schon mal nicht schlecht.

Und jetzt nimmst Du dein output Grid und gehts gemütlich durch die Columns
und Rows durch, packs die Werte in das Excel und fertig.

Jörg

Willst Du jetzt ne Anleitung haben wie Du das Beispiel anstellte der DataColumns mit
DataGridViewColumn, wo das im Grunde sehr ähnlich ist, umbaust?

foreach(DataGridViewColumn col in output.Columns)
{
    excel.Cells[1,cIndex]= col.Name;
}

Ende

Jörg

A
apollo Themenstarter:in
72 Beiträge seit 2006
vor 17 Jahren

danke, funktioniert soweit, musste aber noch viel umbauen.

jetzt ne andere frage, nach dem speichern wird excel offen gelassen, habe versucht das mit excel.Quit() zu umgehen. trotzdem sehe ich im taskmanager immer noch EXCEL offen, wenn ich mehrmals ne andere tabelle speicher hat der excel auch dementsprechend oft offen.

gibt es da eine möglichkeit das zu umgehen?

gruß

2.223 Beiträge seit 2005
vor 17 Jahren

und wieder mal die frage hast du die forumsuche mal bemüht?

zb
Excel-Applikation richtig schließen

wahrscheinlich nicht

mfg