Autor Beitrag
haschme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 31.03.16 10:17 
Hallo zusammen,

ich suche derzeit nach einer Möglichkeit, den Inhalt von Excel-Dateien in einer Windows-Form anzeigen zu lassen.
Daher habe ich mir überlegt ein Control zu schreiben.

Es soll am Ende den Inhalt einer Excel-Datei laden und anzeigen können.
Zusätzlich würde ich gerne eine Methode einbauen, die mir bei Bedarf die derzeit markierten Zellen zurückliefern kann.

Zur Darstellung von Excel-Dateien bin ich derzeit auf zwei unterschiedliche Methodiken gestoßen:

1) Das Anzeigen von Excel-Dateien per Webbrowser-Komponente ( www.codeproject.com/...ndows-Form-Applicati )
2) Das Anzeigen von Excel-Dateien per DataGridView indem einfach eine Datatable mit dem Excel-Inhalt gefüllt wird und an die DataGridView übergeben wird.
zu 2) ( www.aspsnippets.com/...ing-C-and-VBNet.aspx )

Bei Methode 1) ist mir beim Testen aufgefallen, dass ich erst noch Registry-Einträge ändern musste damit es funktioniert:
stackoverflow.com/qu...-an-instance-of-exce


Ich wollte mal Fragen ob mir jemand einen Tipp geben kann welche der Methodiken für mein Vorhaben am Besten geeignet sein dürfte.
Oder gibt es eventuell noch andere Möglichkeiten?

Vielen Dank!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.03.16 11:19 
Ohne jetzt einen konkreten Vorschlag zu haben solltest du uns deine Randbedingungen mitgeben und genau sagen was für dich genau ~anzeigen~ bedeutet.

- Soll das mit/ohne installiertem Excel funktionieren
- welche Formate genau (xls/xlsx/Templateformate etc.)
- müssen Formeln funktionieren
- müssen aktive Inhalte (Diagramme etc.) funktionieren

Für diesen Beitrag haben gedankt: haschme
haschme Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 31.03.16 11:41 
Excel muss nicht zwingend installiert sein, zuletzt habe ich immer die NetOffice Library verwendet um mit Excel zu arbeiten.

Als Formate werden nur .xls und .xlsx benötigt

Formeln müssen nicht funktionieren und Diagramme oder andere aktive Inhalte müssen ebenfalls nicht funktionieren.

Im Prinzip geht es darum, dass ich eine Software geschrieben habe die die Anzahl der Zeilen von verschiedenen Dateien ermittelt.
Diese Mengen werden danach in eine existierende Excel-Vorlage geschrieben.

Bisher muss der User immer die Excel-Vorlage öffnen und gucken welche Zellen mit welchen Mengen befüllt werden sollen.
Diese Mengen gibt er dann in einer Tabelle auf der WindowsForm ein.

Um das ganze etwas benutzerfreundlicher zu gestalten, habe ich vor die o.g. Komponente zu entwickeln.
Dadurch kann der User seine Excel-Vorlage direkt in der Form begutachten und die Spalten markieren, in die später die Datei-Zeilenanzahl eingetragen werden sollen.
Ich stelle mir dabei ein Event vor, das nach einem Rechtsklick die markierten Zellenpositionen an die Form übergibt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 31.03.16 12:08 
Hallo,

kennst du schon SourceGrid (eine .NET-Komponente, welche vom Aussehen an Excel angelehnt ist)?

Aber egal ob diese Komponente oder eine selbstgeschriebene, das größte Problem dürfte wohl das Parsen und Schreiben des .xls bzw. .xlsx Formats sein (außer z.B. die OleDbConnection wie im 2. Link zu verwenden).

Ansonsten bleibt dir wohl nichts anderes übrig als direkt Excel in deinem Programm einzubetten.

Geht es dir also nur um die Daten oder soll die Funktionalität von Excel zur Verfügung stehen?

Für diesen Beitrag haben gedankt: haschme
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.03.16 12:51 
Es ist etwas mißverständlich möchtest du nur Excel anzeigen oder auch etwas ändern?

Für diesen Beitrag haben gedankt: haschme
haschme Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 31.03.16 15:15 
Das Control soll nur als Anzeige dienen.
Trotzdem würde ich gerne Zellen markieren können.
Allerdings wird Inhaltlich nix verändert.

Das Ändern der Excel-Datei wird nachträglich mit der Software erreicht.

Der Nutzer soll im Control die Zellen markieren in denen in der Original-Datei etwas reingeschrieben werden soll und mit Rechtsklick bestätigen.
Durch den Rechtsklick sollen dann die Positionen der markierten Zellen von der Komponente an die Software übermittelt werden.

Dadurch weis die Software wo in der Original-Datei reingeschrieben werden soll.

So war zumindest mein Plan :D
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.03.16 15:24 
Ich würde dann eher denn Weg über OleDb+Jet/Ace Treiber gehen und das Zeug in einem eigene Grid anzeigen.
Das ist minimal invasiv und braucht selbst kein Excel.

Das embedden von Excel im Webbrowser ist ein riesen Heckmeck. Gerade wenn das später auf Systemen laufen soll die du nicht vollständig unter Kontrolle hast wird das zum Support Alptraum. Es gibt tausende von nicht offensichtlichen Möglichkeiten das das später auf einem System nicht funktioniert.

Für diesen Beitrag haben gedankt: haschme