Excel statt csv / Formattierung Excel

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

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

    Excel statt csv / Formattierung Excel

    Hallo,

    ich bräuchte mal einen Rat. Ich habe ein Programm, dass eine .csv produziert.
    Die kann ich jetzt in Excel öffnen, dann kann ich das Ganze formattieren und als xlsx abspeichern.

    Mit einer Schnittstelle zu Excel könnte ich bestimmt die Formatierung auch automatisch einbauen und statt einer .csv direkt eine .xslx erzeugen.
    Aber eigentlich braucht die Formatierung nur einmalig erfolgen, daher die Frage gibt es vielleicht einen Weg Daten nur in eine bereits bestehende Excel Datei einzufügen?
    Die Datei müsste dann ja nur einmal vorformatiert sein.
    Aber da brauch ich dann auch eine Schnittstelle zu Excel?
    Irgendwie gefällt mir der Aufwand für so eine kleine Umstellung nicht, gibt es da ein bessere Lösung?

    Viele Grüße
    Wenn Du das nicht mit einem Excel-Makro machen willst, sondern über VB die Daten einfügen willst, musst Du in Deinem Programm Excel einbinden. Entweder direkt oder mit Wrappern wie Epplus. Ja, eine XLSX ist in Wirklichkeit ein ZIP-Archiv und Du könntest es auseinandernehmen und in die passende Zieldatei die neuen Rohdaten schreiben und das Ganze wieder verpacken. Aber diesen Weg würd ich an Deiner Stelle nur in Erwägung ziehen, wenn es gar nicht anders geht - falls überhaupt möglich.
    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.
    @Haudruferzappeltnoch Wenn ich Daten in Excel ansehen möchte, erstelle ich eine Datei mit dem Namen xyz.xls (die Extension ist wichtig) und schreibe meine Tabulator-getrennten Spalten hinein.
    Als Dezimalseparator wird hier ein Punkt, nicht aber ein Komma erwartet.
    Doppelklick drauf und die Daten stehen in den Zellen, wo sie hingehören.
    Das Meckern von Excel wegen des Formats musst Du dann ggf. ignorieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Meinst du die Excel Import Funktion? Da bekomme ich immer ein frisches Arbeitsblatt mit eigener Formatierung.

    Irgendwie krieg ich nichmal den Verweis auf Microsoft.Office.Interop

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Haudruferzappeltnoch schrieb:

    Meinst du die Excel Import Funktion?
    Nein.
    M;ach im Explorer einen Doppelklick auf diese Datei.
    Das System ruft Excel auf und übergibt diese Datei.
    Mit dem alten Excel funktioniert das wunderbar. Mit dem neuen habe ich das noch nicht probiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja klar, das ist aber natürlich unformatiert.

    Ich kriege hier keine Range abgerufen, der läuft da auf einen Fehler, den ich nicht ansehen kann in Zeile 7

    VB.NET-Quellcode

    1. Dim objApp As Excel.Application
    2. objApp = New Excel.Application()
    3. Dim objBooks = objApp.Workbooks
    4. Dim objBook = objBooks.Open(path)
    5. Dim objSheets = objBook.Worksheets.Cast(Of Excel._Worksheet)
    6. Dim objSheet = objSheets(1)
    7. Dim range = objSheet.Range("A2", Reflection.Missing.Value)

    Haudruferzappeltnoch schrieb:

    unformatiert
    Genau.
    Das ist der Unterschied zwischen diesen beiden Herangehensweisen.
    Mein Ziel ist, eine Zahlenkolonne schnell mal als Graph ansehen zu können.
    Mehr nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Tatsächlich ich dacht das war so eine Eigenart, dass Excel bei 1 anfängt zu zählen. So verkaufts Microsoft auch einem.
    Ich habe mehrere Seiten habe aber nur auf Seite 1 geguckt und somit die Änderung auf Seite 2 nicht gesehen.

    Beim Debuggen wird allerdings trotzdem der Fehler verursacht, das scheint dem Prozess nicht zu schaden.

    Davon abgesehen habe ich den Code so von Microsoft übernommen, ich weiß es gibt noch so Sachen wie ReleaseComObject, welche normalerweise benutzt werden. Aber das scheint hier nicht genutzt zu werden, kann das so richtig sein?

    VB.NET-Quellcode

    1. Dim objApp As Excel.Application
    2. objApp = New Excel.Application()
    3. Dim objBooks = objApp.Workbooks
    4. Dim objBook = objBooks.Open(path)
    5. Dim objSheets = objBook.Worksheets.Cast(Of Excel._Worksheet) 'Hier abgeändert wegen Option Strict On Fehlern
    6. Dim objSheet = objSheets(0)
    7. Dim range = objSheet.Range("A2", Reflection.Missing.Value)
    8. range = range.Resize(5, 5)
    9. [..Füllen..]
    10. objApp.Visible = True
    11. objApp.UserControl = True
    12. range = Nothing
    13. objSheet = Nothing
    14. objSheets = Nothing
    15. objBooks = Nothing

    Tja, ich merke es schon selber.

    Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()