Laden...

Wie kann ich einen Ausschnitt einer Excel Datei in einem Control anzeigen?

Erstellt von OXO vor 3 Jahren Letzter Beitrag vor 3 Jahren 370 Views
O
OXO Themenstarter:in
86 Beiträge seit 2020
vor 3 Jahren
Wie kann ich einen Ausschnitt einer Excel Datei in einem Control anzeigen?

Hallo zusammen,

ich habe schon ein paar Beiträge durchgelesen, bei denen beschrieben wurde, wie man eine Excel-Datei in einem Control innerhalb einer WinForms-Anwendung anzeigen können soll (z.B. mit dem WebBrowser oder anderen ActiveX).

Leider haben diese Varianten bei mir nicht so richtig funktioniert und entweder wurde die Datei immer extern geöffnet oder aber, die Microsoft Controls zur Anbindung standen gar nicht zur Auswahl, obwohl Excel 2007 installiert ist.

Mir ging es eigentlich darum, dass ich etwas vom DataGridView weg kommen kann. Beim DataGridView muss man wirklich immer sehr viel händisch zusammenprogrammieren, um eine Grundfunktionalität und Optik zu bekommen, die Excel schon von Haus aus gut macht.

Ich möchte im Grund einfach einen Ausschnitt aus meiner Excel-Tabelle anzeigen und darin Werte auslesen und setzen (ohne die Excel-Datei wieder zu speichern).

In der Excel-Tabelle gibt es aktuell ein DropDown-Menü bei dem Werte aus einem anderen Datenblatt eingeblendet werden. Diese Werte für die DropDown-Box wollte ich in der WinForms-Anwendung auch aus einer ganz anderen Excel-Tabelle auslesen und in dem angezeigten Ausschnitt in den DropDown-Boxen zur Verfügung haben.

Die Frage ist, worüber würde man das heutzutage (VS 2019) realisieren und gibt es noch Controls, mit denen man wirklich einen Teil der Excel-Tabelle einblenden kann, oder ist diese Funktionalität komplett von der Bildfläche verschwunden und ich muss es wirklich alles händisch über das DataGridView machen?

4.931 Beiträge seit 2008
vor 3 Jahren

Eine Komponente, welche den Look und Teilfunktionalität von Excel nahekommt, ist das SourceGrid (jedoch mußt du den Zugriff ähnlich programmieren wie beim DataGridView).

ActiveX ist eine veraltete (unsichere) Technologie und wurde ja auch nur vom IE unterstützt (und somit ist auch der WebBrowser veraltet, da dieser auf dem IE beruht).

Kannst du denn die Excel-Daten anderweitig auslesen (per OLE oder anderem Reader)?
Geht es denn um eine XLS oder aktuelle XLSX-Datei (wofür es spezialisierte Libraries wie OpenXML oder ClosedXML gibt)?

2.078 Beiträge seit 2012
vor 3 Jahren

Ansonsten gibt's noch kostenpflichtige Frameworks.
Ich hab z.B. eine Weile mit den WPF-Angeboten von DevExpress gearbeitet, deren DataGrid ist wirklich sehr umfangreich und hat zumindest uns alle Wünsche erfüllt.
Ansonsten bietet es auch noch Funktionen für "reines" Excel, doch damit hab ich weniger Erfahrung.

Kostet aber auch eine Menge, doch für größere Anwendungen, die viel auf Tabellen basieren, ist es das mMn. auch wert.

O
OXO Themenstarter:in
86 Beiträge seit 2020
vor 3 Jahren

Hallo Th69,

es handelt sich hier um eine Datei aus Exel 2007. Diese liegt schon im *.xlsx Format vor. Das eigentliche "Problem" ist aktuell fast nur die schöne Anzeige.
Ein riesen Freund war ich nie vom DataGridControl und es zeigt sich auch hier wieder, dass es auf diesem Wege sehr viel manuelles Nacharbeiten mit vielen Kleinigkeiten ist. Wenn man in Excel auf "Entf" drückt ist der Wert aus einer Zelle gelöscht. Solche Dinge muss man im DataGridControl alle manuell und händisch nachbauen. Genauso mit den Linien und Umrandungen überall. Auch die DataGridViewComboBoxCell ist so ein Ding, wenn die integriert ist. Da ist der Mechanismus so, dass man 2x klicken muss, damit das Menü aufspringt. Ebenso ist das Farbschema nicht natürlich in das weiß der anderen Zellen integriert, sondern muss auch manuell nachjustiert werden.

Wie gesagt, sehr viel Handarbeit, um nur das Grund-Look-and-Feel von Excel zu haben.
Die Daten hole ich mir in die ComboBox per OLE DB mittels Microsoft.ACE.OLEDB.12.0 und weise diese DataTable dann per DataSource der DataGridViewComboBoxCell mit einem DisplayMember und ValueMember zu.