Autor Beitrag
daniel_sudy
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 31.01.08 19:13 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Fr 01.02.08 10: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


C# (VS 2005 / VS2008)
BeitragVerfasst: Fr 01.02.08 10:36 
Hi golgol.

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Fr 01.02.08 10: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


C# (VS 2005 / VS2008)
BeitragVerfasst: Fr 01.02.08 11: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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 01.02.08 18: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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 02.02.08 13:25 
So dürfte es fast funktionieren, drei Dinge noch:
  • Entferne das "ref" aus Daves Code, ist unnötig.
  • Denke noch einmal über die Array-Größe nach ;) .
  • den Writer natürlich am Ende noch schließen => using-Block