Ärgerliches Problemchen bei serverseitiger Automatisierung Excel

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    Ärgerliches Problemchen bei serverseitiger Automatisierung Excel

    Hallo,

    ich habe eine kleine Anwendung die eine bestehende Excel-Datei nimmt und in eine schlichte csv umbaut. Das passiert auf einem Microsoft 2019 Server
    Microsoft sagt die Automatisierung von Excel auf Server macht viele Probleme. Und das merke ich hier auch, die csv wird nämlich mal mit ";" mal mit "," als Trennzeichen erzeugt. Dies passiert vorwiegend nach Updates der Anwendung wobei der Excel-Teil nie angefasst wird!
    Hier wird die csv aus einem Worksheet erzeugt, man kann ein Trennzeichen explizit angeben, scheint ihn manchmal aber gar nicht zu interessieren.

    VB.NET-Quellcode

    1. _Sheet = DirectCast(_Sheets(1), Excel.Worksheet)
    2. If File.Exists(PathOfSafeCopy) Then File.Delete(PathOfSafeCopy) 'PathOfSafeCopy ist der Pfad für die erstellte csv.
    3. _Sheet.SaveAs(PathOfSafeCopy, Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, ";")
    Das Ganze befindet sich in einer Klasse die Excel auch wie vorgesehen aufräumt.

    Die csv nutze ich hinterher noch, und das dieser Fehler auftritt habe ich mittlerweile damit behoben, das ich einem Lesefehler der csv mit eine Austausch des Trennzeichens begegne (;<->, je nach dem).
    Habt ihr noch ne Idee was da passiert?

    Viele Grüße
    Bist Du Dir denn sicher, dass der 10. Parameter von SaveAs wirklich das Trennzeichen einstellt.
    Schau Dir das mal genauer an, insbesondere die Kommentare zum CSV-Export learn.microsoft.com/de-de/offi…api/excel.workbook.saveas

    Alternativ nimm doch eventuell eine andere CSV-Version learn.microsoft.com/de-de/office/vba/api/excel.xlfileformat
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Du verlinkst auf Workbook, obwohl es ein Worksheet ist. Aber trotzdem hast Du recht: der letzte Parameter ist Local und ist für was anderes da:

    Microsoft schrieb:

    True speichert Dateien in der Sprache von Excel (einschließlich Einstellungen der Systemsteuerung). False
    (Standard) speichert Dateien mit der Sprache von Visual Basic for
    Applications (VBA) (was für gewöhnlich Englisch (USA) ist, es sei denn,
    das VBA-Projekt, wobei Workbooks.Open ausgeführt wird, ist ein altes internationalisiertes XL5-/95-VBA-Projekt).
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.