Entwickler-Ecke

WinForms - variableninhalt in excel zellen eintragen


schnubber - Mo 30.04.12 11:57
Titel: variableninhalt in excel zellen eintragen
Hallo Leute,
Habe folgendes problem:
das ziel ist es den Inhalt einer variablen in eine zelle von excel zu schreiben, habe es so weit geschafft dass ich einen festgelegten Text eintragen lassen kann.
Habe eine Klasse wo ein dateiname in eine variable gespeichert wird und diesen namen würde ich gern dann in eine Zelle reinschreiben wollen, was sich als problematisch herausgestellt hat.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
        

           {
            Excel.Workbooks objBooks;
            Excel.Sheets objSheets;
            Excel._Worksheet objSheet;
            Excel.Range range;
            try
            {
                // Excel Starten.             
                objApp = new Excel.Application();
                objBooks = objApp.Workbooks;
                objBook = objBooks.Add(Missing.Value);
                objSheets = objBook.Worksheets;
                objSheet = (Excel._Worksheet)objSheets.get_Item(1);
                //Anfangszelle festlegen            
                //m_sStartingCell und dessen Deminsionen sind m_iNumRows x m_iNumCols.             
                range = objSheet.get_Range("A1", Missing.Value);
                range = range.get_Resize(10005);
              
                    //anlegen des arrays.                
                    string[,] saRet = new string[10005];
                    //Füllen des arrays                
                    for ( long zeile = 1; zeile < 1000; zeile++)
                    {
                        for (long spalte = 1; spalte < 5; spalte++)
                        {
                            //Zeilen-und Spalten-Adresse in der Zelle festlegen  
                            
                            saRet[zeile, spalte] =  "|" + spalte.ToString();
                        }
                    }
                    //Set the range value to the array.                
                    range.set_Value(Missing.Value, saRet);
               
                //Excel Oberfläche auf sichtbar schalten            
                objApp.Visible = true;
               
            }
            catch (Exception theException)
            {
                String errorMessage;
                errorMessage = "Error: ";
                errorMessage = String.Concat(errorMessage, theException.Message);
                errorMessage = String.Concat(errorMessage, " Line: ");
                errorMessage = String.Concat(errorMessage, theException.Source);
                MessageBox.Show(errorMessage, "Error");
            }
        }


Wichtig ist die zeile "saRet[zeile, spalte] = "|" + spalte.ToString();"

Hier wird eine festgelegte zeichenkette reingeschrieben und eine long variable "spalte" die zur zeichenkette konvertiert wird.
Somit ist es mir nur möglich long variablen rein zu schreiben.
wie mache ich das mit string variablen?

Hier is der quellcode wo ich meinen dateinamen in eine string variable lege:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
       // Diese Klasse
            // macht Instanzmethoden zum Erstellen, Verschieben und Auflisten in Verzeichnissen und Unterverzeichnissen verfügbar
            DirectoryInfo dirInfo = new DirectoryInfo(@"C:\Dokumente und Einstellungen\dp\Desktop\dateien");
            //Diese Klase stellt Instanzmethoden zum erstellen, kopieren, löschen, verschieben und öffnen von Dateien bereit
            FileInfo[] files = dirInfo.GetFiles("*.jpg");
            foreach (FileInfo fiOutput in files)
            {
                //das ist die variable mit der ich arbeiten möchte
                string buffer=fiOutput.Name;
            }


mats74 - Mo 30.04.12 14:41

Hallo schnubber

Ich habe dein Code ohne und mit einer Stringvariable ausprobiert und sehe eigentlich keine Probleme.
Auch mit einer Stringvariable:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
String irgendeinwert = "";
            
            DirectoryInfo dirinfo = new DirectoryInfo(@"C:\Temp\");
            FileInfo[] files = dirinfo.GetFiles("*.txt");
            foreach(FileInfo fiOutput in files)
            {
                irgendeinwert = fiOutput.Name.ToString();
            }
            ...
            saRet[zeile, spalte] = "|" + irgendeinwert; // hier die StringVariable eingesetzt.
            ...

Ansonsten habe ich dein Problem nicht verstanden, denn der Code funktioniert einwandfrei.


schnubber - Mo 30.04.12 15:01

Danke sehr wie ich sehe habe ich die geschweifte klammer zu früh geschlossen bzw 2 stück zu viel gehabt so dass die variable im nächsten block gar nicht mehr vorhanden ist und deswegen der fehler kommt wenn ich sie ausgeben will. =)
habe nämlich eiskalt den untergen code mit dem oberen verbunden und dann kams zu fehlern.