| |
VB.NET - Ein- und UmsteigerRe: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 21.03.11 12:01 |
| Hast Du denn dieses Problem?
Da es da auch Lösungen für gibt, wieso willst du "nur" für den Import sowas haben? | |
Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: 2Net | Datum: 18.03.11 16:57 |
| Hallo allerseits,
ich möchte (mir fällt hier erst einmal per oledb-Connection ein) eine Exceldatei in ein Datagridview einlesen, wobei diese Vorgehensweise unabhängig von der Excel-Version sein sollte. Im Connection String muss jedoch meines Wissens nach die Excel-Version angegeben werden.
Kennt jemand einen Weg dieses zu bewerktelligen ohne dabei kostenpflichtige Komponenten in Anspruch zu nehmen? Gerne auch ohne olddb-Conection. Carlos ExcelWriter hilft mir nicht, da auch ältere Excel-Dateien ausgelesen werden sollen.
Vielen Dank!
PS: Diesen Link(http://www.vbarchiv.net/forum/read.php?f=10&t=70150&i=70161) habe ich schon hinsichtlich der dort aufgelisteten Möglichkeiten/Komponenten berücksichtigt.
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1
Beitrag wurde zuletzt am 18.03.11 um 17:00:41 editiert. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: Micke | Datum: 18.03.11 21:46 |
| für den zugriff nimmt man z.b. office tools für vst, die z.b. der installtion des VST beiligen.
kann man auch runterladen.
die excelversion ist dabei schnuppe, bzw. muß man halt schauen ob die funktionen die man benutzt auch existieren.
aber ein excelsheet im datagridviev anzeigen ist tendenziell Murks.
Micke | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 19.03.11 10:59 |
| Da bist du aber schlecht informiert.
http://msdn.microsoft.com/de-de/library/bb608603.aspx
Die Officetools sind nur eine Erweiterung der PIA, benötigen also auch ein installiertes Office. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 19.03.11 11:00 |
| Du musst nur dann eine Excelversion angeben, wenn du mit Office 2007 Dateien arbeitest, weil dann ein anderer OleDb Provider benutzt werden muss.
Aber was hast Du aus dem Link probiert?
Und was geht nicht? | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: Earny | Datum: 19.03.11 12:19 |
| Hallo,
ich habe mal irgendwann diesen 3-Zeiler irgendwo in einer MSDN-Hilfe gefunden:
Public Class Form1
Dim Exc As Object
Private Sub btnMappeOeffnen_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnMappeOeffnen.Click
Try
Exc = GetObject(CurDir() & "\Mappe1.xls") 'Wertzuweisung für Exc-Objekt
Exc.Application.Visible = True 'Excel starten und sichtbar schalten
Exc.Windows(1).Visible = True 'Tabelle1 (linke Tabelle) sichtbar
' schalten
Me.Activate() 'VB-Formular wieder in den Vordergrund bringen
Catch ex As Exception
MessageBox.Show(ex.Message, "Excel-Fehler", MessageBoxButtons.OK,
MessageBoxIcon.Error)
End Try
...
... Wegen CurDir wird die Excel-Mappe im Ordner bin\debug gesucht, wenn du in der Entwicklungsumgebung testest. Du kannst aber auch den kompletten Pfad angeben.
Dieser Zugriff mit später Bindung auf eine vorhandene Excel-Mappe sollte mit jeder Excel-Version funktionieren.
Bei mir hat der Zugriff aus VB2005Prof auf Excel2000 und Excel2007 immer funktioniert.
Ein Kollege sagte, dass der Zugriff von VB2010Exp. auf Excel2010 mit der obigen Methode nicht gehen soll, was ich aber nicht glaube. Ich kann es nicht testen, weil ich kein Excel2010 habe.
Ich kann mir nicht vorstellen, dass MS auch das Excel-Objektmodell gravierend geändert hat. Normalerweise werden nur die Farbverläufe optimiert. Natürlich gilt das nicht für den Übergang von 2003 auf 2007. Hier gab es aus meiner Sicht tatsächlich substantielle Verschlechterungen.
Gruß
Earny | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: 2Net | Datum: 19.03.11 14:42 |
| http://www.codeproject.com/KB/office/biffcsharp.aspx
Dies ist lediglich ein Writer - ich benötige einen Reader.
Das nachfolgende Excelpackage funtkioniert nicht bei alten Excelversionen
http://excelpackage.codeplex.com/
Die übrigen Links von Dave führten zu kommerziellen Produktionen, von denen ich eigentlich absehen wollte. Zur Zeit überlege ich allerdings, ob sich diese Investition auch für einen Hobbyprogrammierer lohnen würde. Hier fand ich vom Preis smartxls interessant. Spreadsheetgear (free) ist leider vom Umfang nicht ausreichend. Das normale Spreadsheetgear finde ich derzeit vom Preis her etwas zu viel für meinen Geldbeutel. Hierzu gerne Erfahrungen und Meinungen.
Nun gut - zur Anfangsfragestellung... Ist es richtig, dass eine Lösung, die wäre, zunächst zu prüfen um welche Excel-Datei-Version es sich handelt (Office 2007 ja oder nein), dann den entsprechenden Connection-String zu erstellen und dann per Code einzulesen? Gibt es Beschränkungen?
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1
Beitrag wurde zuletzt am 19.03.11 um 14:46:46 editiert. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: 2Net | Datum: 19.03.11 14:44 |
| Hallo,
ich möchte i.d.F. keine Excel-Automation verwenden, sondern einen Weg finden, der auch funktioniert, wenn Excel nicht installiert ist.
Trotzdem Danke!
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1 | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 20.03.11 20:20 |
| Natürlich wird es Beschränkungen geben, wie z.b. falsche eingelesene Felder,
das hat dann aber eher andere Gründe.
Excel 2007 und neuer erkennst du ja an der Extension xlsx. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 21.03.11 10:13 |
| Wenn z.b. der OleDb Provider in den ersten Zeilen der Tabelle den Datentyp einer Spalte nicht ganz richtig erfasst.
Aber wie gesagt, das hat nicht mit OleDb zu tun. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: 2Net | Datum: 21.03.11 11:32 |
| Okay. Dann erscheint mir eine Lösung mittels kommerziellen Produkt wohl am sinnvollsten. Hast Du bzw. hat jemand Erfahrung mit smartxls gemacht (ist deutlich billiger als GemboxSpreadsheet*)?
*Die free-Version kommt aufgrund der Beschränkungen leider nicht infrage.
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1
Beitrag wurde zuletzt am 21.03.11 um 11:33:36 editiert. | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: 2Net | Datum: 21.03.11 12:15 |
| Ich bin zunächst davon ausgegangen, das es dafür keine Lösungen gibt, da Du auf die Probleme hingewiesen hast.
----
Meine Komponenten sind:
Visual Studio 2008 (Standard) SP 1
Windows 7 SP 1 | |
Re: Excel lesen mittels oledb bei unbekannter Excelversion | | | Autor: FZelle (Moderator) | Datum: 21.03.11 13:59 |
| Nein, es gibt Lösungen, aber es sind halt Fehler die von Leuten gemeldet werden, die dann meist erst fragen statt zu suchen. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|