Entwickler-Ecke

Basistechnologien - Excel schreiben


daniel_sudy - Do 31.01.08 18:13
Titel: Excel schreiben
Guten Tag, habe folgendes Problem. In meinem Programm verfüge ich über 3 Arrays die mit string Werten gefüllt sind. Nun möchte ich diese Werte in eine Excel Arbeitsmappe schreiben, sprich 1 Array in 1 Spalte im Excel, 2. Array in 2 Spalte....
Wie kann ich da am besten realisieren?
Hat jemand eine Hilfe für mich?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 31.01.2008 um 18:15


golgol - Fr 01.02.08 09:21

Also ausserhalb von .NET würde ich das über COM machen - es gibt da ne Excel Object Library, die man einbinden kann. Ich kann dir nicht sagen, ob es in .NET eine bessere Möglichkeit gibt, aber die COM-DLL kannst du ja auch in C#/.NET problemlos verwenden.


Dave86 - Fr 01.02.08 09:36

Hi golgol.

Hier mein vorschlag...
erzeug dir nen Streamwrite mit xls endung und dann diese Funktion


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
public void AddRow(object[] objRowContent, ref StreamWriter swExcelFile)
        {
            //Begin row
            swExcelFile.WriteLine("<tr>");
            foreach (object obj in objRowContent)
            {
                if (obj == null)
                {
                    swExcelFile.WriteLine("<td>" + "</td>");
                }
                else
                { 
                  swExcelFile.WriteLine("<td>" + obj.ToString() + "</td>");
                }
            }
            //End row
            swExcelFile.WriteLine("</tr>");
        }


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


golgol - Fr 01.02.08 09:57

user profile iconDave86 hat folgendes geschrieben:
Hi golgol.

Hier mein vorschlag...
erzeug dir nen Streamwrite mit xls endung und dann diese Funktion


Hmm, dann hättest du ne ASCII-Datei mit der Endung und den HTML-Tabellen-Tags darin .. oder? Also wenn dem so ist (hab hier grade keinen Kompiler oder so zu Verfügung), dann würde Excel dann doch je eine Zeile aus der Datei in die Felder A1 bis An schreiben oder? (Wie gesagt, konnte es hier nicht testen).


Dave86 - Fr 01.02.08 10:07

Hi golgol.

Also ich weiß dass diese Art Funktionert musst halt am Anfang noch <table> schrieben...
Excel erkennt das und öffnet es korrekt...hab ich ausprobiert...
ja ist richtig der schreibt dann A1 bis An ..aber wenn du eh nur 3 Spalten schreiben willst übergib das Array und schreib dann A1[i],A2[i] und A3[i]..
sollte man doch so umstricken können.


daniel_sudy - Fr 01.02.08 17:54

Danke mal dafür so jetzt noch eine Frage, wie wende ich diese Funktion an?

Also wenn mein Array z.b Test heißt, kann ich das dann so schreiben:


C#-Quelltext
1:
2:
3:
4:
5:
6:
StreamWriter writeExcel = new StreamWriter("test.xls");
string[] test = new string[1];
test[0] = "Wert1";
test[1] = "Wert2";

AddRow(test,writeExcel);


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Kha - Sa 02.02.08 12:25

So dürfte es fast funktionieren, drei Dinge noch: