Excel einfach Auslesen

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

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

    Excel einfach Auslesen

    Hi Leute ne ganz eindache frage ich will ein Excel Dokument auslesen nur eine Zelle A6 und das dann in einer textbox reinschreiben mehr will ich garnicht ...
    allerding finde ich im Internet nur lange codes kann man das auch kurz schreiben ? oder hat jemand ne Seite wo es steht ?

    Thema verschoben ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Eierlein: was soll das denn werden?
    @MrLaTuNiX: Es gibt wirklich viele Hilfen zu diesem Thema und knakig kurzen Code gibt es eher nicht. So ganz trivial ist es nämlich nicht weil eine Excel-Datei eben nicht eine Textdatei ist.
    Als erstes hoffe ich mal, dass wir nicht von XLS reden, wobei dann kannst du immer noch per OLEDB Provider auf deine Excel zugreifen. Dazu muss man aber ein paart Zeilen Code schreiben.
    Hilfe hierzu: google.com/search?q=OleDbConnection+excel+vb.net
    Wenn du lieber per Interop operieren willst, dann hilft dir das hier weiter: google.com/search?q=excel+vb.net+interop
    Möchtest du Excel vielleicht per OpenXML ansprechen, dann hilft dir google.com/search?q=excel+vb.net+openxml vielleicht weiter
    Du kannst Excel auch mit Drittanbieter Werkzeugen bearbeiten, dann empfehle ich EPPlus zu verwenden, was du sicher selbst googlen kannst.
    Die letzten beiden Punkte sind für deinen Zweck "Mit Kanonen auf Spatzen schießen", also oversized.

    Also bleiben OlebDb oder Interop. Da musst du dich einfach entscheiden.

    Nach Einwand von @petaod überarbeitet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()

    Dksksm schrieb:

    dann empfehle ich EPPlus zu verwenden
    Ich empfinde EPPlus als die schusssichere Kanone im Vergleich zu Interop.
    Ich verwende das fast grundsätzlich für solche Operationen.
    Man muss sich nicht um irgendwelche Excel-Installationen kümmern.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Okay Leute erstmal danke und hab es dann mit Interop gemacht :)

    C#-Quellcode

    1. async Task<bool> ReadVariable()
    2. {
    3. bool succeeded = false;
    4. while (!succeeded)
    5. {
    6. //open file excel using microsoft dll
    7. Excel.Application app = new Excel.Application();
    8. //open workbook
    9. Excel.Workbook wk = app.Workbooks.Open(excelpath);
    10. //get first sheet
    11. Excel.Worksheet sh = wk.Worksheets[1];
    12. //get cell
    13. var cell = sh.Cells[1, 1].Value.ToString();
    14. exceltest1.Text = cell;
    15. await Task.Delay(1000);
    16. }
    17. return succeeded;
    18. }


    Allerdings meine Frage ich lese die Zeile dauerhaft aus weil sich die Werte in der zelle sich immer ändern allerdings klappt das nicht wenn ich die excel Tabelle öffnen will dann nur schreibgeschützt , wie kann man das beheben ?

    Also zur erklärung ich will eine Excel Tabelle alle 30 minuten auslesen die wird automatisch immer alle 30 min gespeichert und die Werte ändern sich immer alle 30 min die will ich in einer Textbox anzeigen lassen.

    und ja ich weiß grad lese ich alle 1 sekunde aus

    MrLaTuNiX schrieb:

    Allerdings meine Frage ich lese die Zeile dauerhaft aus weil sich die Werte in der zelle sich immer ändern allerdings klappt das nicht wenn ich die excel Tabelle öffnen will dann nur schreibgeschützt , wie kann man das beheben ?

    ?( Ich verstehe diesen Satz nicht. Willst du die Datei schreibgeschützt öffnen oder nicht?
    Falls Ja: die Workbooks.Open-Methode (Excel) hat den Parameter ReadOnly.
    Falls Nein und auch allgemein: Schliesse die Datei und Excel nach der Verwendung wieder, sonst hast du am Ende tausende Excel offen.

    Vielleicht wäre der FileSystemWatcher als Alternative zu einem Timer eine Lösung.
    Okay ja danke das war es ich hab es einfach voll vergessen es wieder zu schließen ....
    und ne ich wollte sie nicht Schreibgeschützt öffnen :)

    ja das ding ist das die Datei sich eh alle 30 min nur ändert deswegen dachte ich ein timmer reicht dort auch von 30 min (muss halt nicht so genau sein ) :)
    Ja, in der Konstellation (alle 30 Minuten Werte aktualisieren) kannst Du den Timer verwenden, musst aber tatsächlich immer wieder die Datei öffnen, auslesen, schließen. Eine Dateiinstanz einmal erstellt reicht nicht. Ohne ReadOnly kann in Excel die Datei nicht verändert werden. Mit ReadOnly wird nur der Zustand beim Laden erfasst, aber keine Änderungen, die später geschehen.

    Ich bin mal so frei und verschiebe das Thema, da es nix mit der WPF an sich zu tun hat.
    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.