Excel Formatierungsproblem Versionsunterschiede



  • Hallo,

    nachdem ich schon öfters Formatierungsprobleme meiner Daten beim Export nach Excel hatte, ist mir heute noch folgendes aufgefallen. Vielleicht kann mir dazu jemand helfen, wie ich das Problem jetzt lösen kann.

    Beide Male die selbe Export-Funktion:
    Visual Studio C# 2008 Express Edition
    -Summe wird in Excel immer korrekt dargestellt

    Visual Studio 2010 Professional
    -Anstatt der Summe erhalte ich #NAME?

    Kann mit jemand sagen, an was das liegt? Bzw. wie kann ich das Problem beheben?
    Selbst wenn ich vor dem Summe Feld vor und/oder nach dem Einfügen eines Wertes versucht zu formatieren

    oSheet.Cells[4, 8].NumberFormat = "#.## €";
    

    steht weiterhin #NAME? im Excel Sheet.

    Hier die Funktion.

    Excel.Application oXL;
                    Excel._Workbook oWB;
                    Excel._Worksheet oSheet;
    
                    oXL = new Excel.Application();
                    oXL.Visible = true;
    
                    oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
                    oSheet = (Excel._Worksheet)oWB.ActiveSheet;
    
                    oSheet.PageSetup.Orientation = XlPageOrientation.xlLandscape;
    
                    if (oWB.Worksheets.Count > 0)
                    {
                        oSheet = (Excel.Worksheet)oWB.Sheets[1];
    
                        // Readout table with months 1-6.
                        for (i = 0; i <= 6; i++)
                        {
                            for (j = 0; j <= 7; j++)
                            {
                                Control c = table1.GetControlFromPosition(i, j);
                                if (c == null)
                                {
                                }
                                else
                                {
                                    oSheet.Cells[z, s] = c.Text;
                                    z++;
                                }
                            }
                            s++;
                            z = 3;
                        }
    		}
    		    oSheet.Cells[1, 5] = "Stand:";
                        oSheet.Cells[1, 6] = System.DateTime.Today;
    
                        oSheet.Cells[3, 8] = "Zwischensumme";
                        oSheet.Cells[10, 1] = "Summe";
                        oSheet.Cells[20, 1] = "Summe";
                        oSheet.Cells[13, 8] = "Gesamtsumme";
                        oSheet.Cells[1, 1] = "Monatliche Kosten: ";
                        oSheet.Cells[1, 3] = year;
                        oSheet.Cells[10, 2] = "=SUMME(B4:B9)";
                        oSheet.Cells[10, 3] = "=SUMME(C4:C9)";
                        oSheet.Cells[10, 4] = "=SUMME(D4:D9)";
                        oSheet.Cells[10, 5] = "=SUMME(E4:E9)";
                        oSheet.Cells[10, 6] = "=SUMME(F4:F9)";
                        oSheet.Cells[10, 7] = "=SUMME(G4:G9)";
    
                        oSheet.Cells[4, 8] = "=SUMME(B4:G4)";
                        oSheet.Cells[5, 8] = "=SUMME(B5:G5)";
                        oSheet.Cells[6, 8] = "=SUMME(B6:G6)";
                        oSheet.Cells[7, 8] = "=SUMME(B7:G7)";
                        oSheet.Cells[8, 8] = "=SUMME(B8:G8)";
                        oSheet.Cells[9, 8] = "=SUMME(B9:G9)";
                        oSheet.Cells[10, 8] = "=SUMME(B10:G10)";
    
                        oSheet.Cells[20, 2] = "=SUMME(B14:B19)";
                        oSheet.Cells[20, 3] = "=SUMME(C14:C19)";
                        oSheet.Cells[20, 4] = "=SUMME(D14:D19)";
                        oSheet.Cells[20, 5] = "=SUMME(E14:E19)";
                        oSheet.Cells[20, 6] = "=SUMME(F14:F19)";
                        oSheet.Cells[20, 7] = "=SUMME(G14:G19)";
    
    		...
    
    		    Excel.Range rg12 = oSheet.get_Range("B4", "H10");
                        rg12.NumberFormat = "#.##0,00 €";
    
    		....
    


  • Hast du mal SUM() statt SUMME() probiert?



  • Ich benutze kein Excel, sondern Open Office. Sollte sich aber im Prinzip nicht viel tun.
    Es gibt auch die Möglichkeit, die Daten statt nach dem Tabellenprogramm zu exportieren vom Tabellenprogramm aus zu importieren.
    Die Schnittstelle ist eine einfache Textdatei .txt mit Trennzeichen. Man setzt zwischen die Felder ein sonst nicht benötigtes Zeichen, z. B. ''.
    Und benutzt vom Tabellenprogramm aus die Funktion Einfügen -> Tabelle aus Datei, benennt das Trennzeichen und fertig. Für die Zahlenfelder aktiviert dabei die Option erweitere Zahlenerkennung.
    Dabei muß man noch drauf achten, ob Komma oder Punkt, je nach Ländereinstellung. Wenn aus 123.45 ein Textfeld entsteht, muß man in der Text-Schnittstelle daraus 123,45 machen.
    Jedenfalls, bei mir funktioniert der Datenimport tadellos.
    Pascal


Anmelden zum Antworten