1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Excel Zellen schreiben (Problem)

Dieses Thema im Forum ".NET Datenverwaltung" wurde erstellt von markuscjb, 5. Februar 2009.

  1. markuscjb

    markuscjb Grünschnabel

    Hallo zusammen,

    ich bin gerade dran was zu schreiben um mit C# was in Excel zu schreiben. Gut der Zugriff funktioniert. Ich kann Daten herauslesen, nur das hineinschreiben nicht. Keine Ahnung warum. Vielleicht habt ihr ne Idee. Kopier mal mein Code hier rein.
    Habe den Code von: Stefan Macke als Vorlage genommen.

    Ich versuche mit ws.Cells[2, 2] = "irgendein Text"; was in eine Zelle hineinzuschreiben.

    PHP:
    1.             Microsoft.Office.Interop.Excel.Application excel = null;
    2.  
    3.             Workbook wb = null;
    4.  
    5.             try
    6.             {
    7.  
    8.                 // Excel starten
    9.  
    10.                 excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
    11.  
    12.                 excel.Visible = false;
    13.  
    14.  
    15.  
    16.                 // Datei öffnen
    17.  
    18.                 wb = excel.Workbooks.Open(
    19.                     db_excel_pfad,
    20.  
    21.                     ExcelKonstanten.UpdateLinks.DontUpdate,
    22.  
    23.                     ExcelKonstanten.ReadWrite,
    24.  
    25.                     ExcelKonstanten.Format.Nothing,
    26.  
    27.                     "", // Passwort
    28.  
    29.                     "", // WriteResPasswort
    30.  
    31.                     ExcelKonstanten.IgnoreReadOnlyRecommended,
    32.  
    33.                     XlPlatform.xlWindows,
    34.  
    35.                     "", // Trennzeichen
    36.                     ExcelKonstanten.Editable,
    37.  
    38.                     ExcelKonstanten.DontNotifiy,
    39.  
    40.                     ExcelKonstanten.Converter.Default,
    41.  
    42.                     ExcelKonstanten.DontAddToMru,
    43.  
    44.                     ExcelKonstanten.Local,
    45.  
    46.                     ExcelKonstanten.CorruptLoad.NormalLoad);
    47.  
    48.                 //Alle Meldungen z.B. Speichern ausschalten
    49.                 //   wb.Application.DisplayAlerts = false;
    50.  
    51.  
    52.                 // Arbeitsblätter lesen
    53.                 Sheets sheets = wb.Worksheets;
    54.  
    55.                 // ein Arbeitsblatt auswählen...
    56.  
    57.                 Worksheet ws = (Worksheet)sheets.get_Item("Tabelle1");
    58.  
    59.                 // ...oder eine Zelle
    60.  
    61.                 Range range = (Range)ws.get_Range("A1", "A1");
    62.  
    63.                 // deren Wert auslesen
    64.  
    65.                 string zellwert = range.Value2.ToString();
    66.  
    67.                 //Was hineinschreiben
    68.  
    69.                 ws.Cells[2, 2] = "irgendein Text";
    70.                 MessageBox.Show(zellwert);
    71.  
    72.                 // Range und Worksheet Objekte freigeben              
    73.                 range = null;
    74.                 ws = null;
    75.  
    76.  
    77.             }
    78.  
    79.             finally
    80.             {
    81.  
    82.                 // Falls noch offen, Excel Datei schliessen und
    83.  
    84.                 // Workbook Objekt freigeben
    85.                 wb.Save();
    86.  
    87.                 if (wb != null)
    88.  
    89.                     wb.Close(false, null, null);
    90.  
    91.                 wb = null;
    92.  
    93.                 // Falls noch offen, Anwendung schliessen und
    94.  
    95.                 // Application Objekt freigeben
    96.  
    97.                 if (excel != null)
    98.  
    99.                 excel.Quit();
    100.                 excel = null;
    101.  
    102.             }
    103.  
    104.         }
    Zuletzt bearbeitet: 5. Februar 2009
  2. Nico Graichen

    Nico Graichen aka gemballa Moderator

    Hi

    Bitte nicht immer schreiben, geht nicht!
    Wie äußert sich geht nicht?
    Gibt es Fehlermeldungen? Woran machst du fest, dass es "nicht geht"? Hast du schon mal debugged und/oder dir den Wert nach dem Setzen wird abgefragt?

    http://support.microsoft.com/kb/302084/de
  3. markuscjb

    markuscjb Grünschnabel

    Hi,

    also geht nicht äußert sich nicht mit keiner Fehlermeldung. Also auch vom Debugger her bekomm ich keinen Fehler. Kurz und gut er wirft gar keine Fehlermeldung.

    Nun ich lasse bsp in Zelle B2 was reinschreiben( ws.Cells[2, 2] = "irgendein Text"; )
    Wenn ich danach die Excel Datei öffne und hineinschau steht nichts drinne. Das ist das Problem.

    Aber dein Tipp mit gleich nach dem reinschreiben wieder Abfragen war schon mal gut. Nachdem ich reingeschrieben habe, habe ich die Zelle wieder abgefragt. Anscheinend schreibt er, speichert aber nicht.
    Weiß nicht, kannst du damit was anfangen? Wenn ich DisplyAlerts auf true setze, kommt zum schluss eine Abfrage ob ich die Datei speichern möchte. Wenn ich mit ja bestätige, fragt er nochmal, und zwar diesmal ob ich die Datei ersetzen möchte. Ich bestätige mit ja. Wenn ich dann die Excel Datei öffne sind die Daten was vorher schon drin waren da, aber das was ich mit dem c# Programm schreiben lassen habe ist nicht da.

    Also irgendwas muss beim speichern falsch laufen bzw. ich mache was falsch. Ich möchte das er einfach nach dem reinschreiben speichert. Ohne die Datei zu ersetzen.

    Danke schon mal für deine Hilfe.
  4. Nico Graichen

    Nico Graichen aka gemballa Moderator

    Hi

    Hast du schon mal probiert, die Datei unter neuem Namen zu speichern oder in ein anderes Verzeichnis?
  5. markuscjb

    markuscjb Grünschnabel

    Hi,

    ich habe jetzt die Datei mittels

    wb.SaveCopyAs(@"C:\test.xlsx");

    sprich eine Kopie von der Datei an einem anderen Ort abgespeichert. Wenn ich jezt hineinschaue passt es! Ja gut ich könnte jetzt die Datei an dem gleichen Ort unter dem selben Namen abspeichern. Die Datei würde dann parktisch im Hintergrund immer ersetzt.

    Dies wäre zwar eine Lösung die nicht sehr elegant ist, aber mit der man leben könnte.
    Was ich nur nicht versteh, wo das Problem beim normalen speichern liegt?

Diese Seite empfehlen