Hallo zusammen,
ich habe diesen Programmcode:
Nun würde ich gerne den Markierten bereich "schöner" bauen.
Der Code tut was er soll, es werden alle Tabellenblätter die in Zelle "A3" mit den Text "YC0P3" beginnen als Tabellen in das DataSet geladen.
Ich mag den "Umweg" über die Tabelle aber nicht.
Ich hatte versucht den SELECT-String mit "WHERE A3 LIKE 'YC0P3%'" zu erweitern, da schlägt das .fill aber fehl. -> "Mindestens ein Parameter ist nicht gesetzt"
Fällt jemandem eine elegantere Lösung ein?
ich habe diesen Programmcode:
VB.NET-Quellcode
- ''' <summary>
- ''' Holt die Daten aller Arbeitsmappen aus einer Excel-Datei in ein DataSet
- ''' </summary>
- ''' <param name="DateiName">Pfad zur Excel-Datei</param>
- ''' <param name="Kopfzeile">Haben die Tabellenspalten Überschriften</param>
- ''' <returns>DataSet</returns>
- Public Function GetExcelToDataSet(ByVal DateiName As String, Optional ByVal Kopfzeile As Boolean = False) As DataSet
- GetExcelToDataSet = New DataSet()
- Dim Provider As String = "Microsoft.ACE.OLEDB.12.0"
- Dim ExProp As String = "Excel 12.0 Xml"
- Dim con As New OleDbConnection(String.Format("Data Source={0};Provider={1};Extended Properties=""{2};HDR={3}""", DateiName, Provider, ExProp, If(Kopfzeile, "Yes", "No")))
- If con.State = ConnectionState.Closed Then con.Open()
- Dim sheets As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
- For Each sheet As DataRow In sheets.Rows
- Dim tableName As String = sheet("Table_Name").ToString()
- Dim com As New OleDbCommand(String.Format("SELECT * FROM [{0}]", tableName), con)
- Dim adap As New OleDbDataAdapter(com)
- '------------ Von Hier
- Dim dt As New DataTable
- adap.Fill(dt)
- Dim Name As String = dt.Rows(2).Item(0).ToString
- If Not String.IsNullOrEmpty(Name) AndAlso Name.Substring(0, 5) = "YC0P3" Then adap.Fill(GetExcelToDataSet, tableName)
- '------------ Bis Hier
- Next
- con.Close()
- End Function
Nun würde ich gerne den Markierten bereich "schöner" bauen.
Der Code tut was er soll, es werden alle Tabellenblätter die in Zelle "A3" mit den Text "YC0P3" beginnen als Tabellen in das DataSet geladen.
Ich mag den "Umweg" über die Tabelle aber nicht.
Ich hatte versucht den SELECT-String mit "WHERE A3 LIKE 'YC0P3%'" zu erweitern, da schlägt das .fill aber fehl. -> "Mindestens ein Parameter ist nicht gesetzt"
Fällt jemandem eine elegantere Lösung ein?
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."