Ein neues Projekt erstellen, welcher Weg ist zielfürend
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 76 Antworten in diesem Thema. Der letzte Beitrag () ist von blam.
-
-
-
So kann ich die Files auslesen um weiter damit zu arbeiten. Bin aber nicht sicher ob das der richtige Weg ist... -
-
-
sorry - bin nicht mehr im Bilde.
Ansatz um was zu erreichen?
Und noch was:ErfinderDesRades schrieb:
Dein Code ist auch keine Methode. Schreib eine Methode.
Die muss noch nicht funktionieren, aber sie muss erstmal da sein. -
ErfinderDesRades schrieb:
Dein Code wird nicht kompilieren.
Wie gesagt: Du brauchst eine Methode, die ein Directory durchsucht, und die Fullnames der dort gefundenen *.xlsx - Files in dieExcelFile
-Tabelle schreibt.
Dein Code ist auch keine Methode. Schreib eine Methode.
Um das zu erreichen.... -
ah - jetzt dämmerts, du fragst, ob die zeile in post#45 ein Ansatz sei, um ein Directory nach *.xlsx-Files zu durchsuchen.
Ja, so eine ähnliche Zeile wird auch vorkommen müssen.
Und noch mehr Zeilen.
Und eine Schleife. Und ExcelFile-Datensätze müssen in der ExcelFile-DataTable angelegt werden.
aber was du vor allem und als allererstes brauchst ist eine Methode. Schreib eine Methode.
Und die soll so heissen wie das was sie tun soll. -
So schaffe ich es die Files bzw. deren Namen in einer ListBox abzulegen. Bin mir aber nicht sicher, ob das der richtige Ansatz ist.
VB.NET-Quellcode
- Private Sub OrdnerAuslesen(ByVal path As String)
- For Each foundFiles As String In My.Computer.FileSystem.GetFiles(path)
- ListBox1.Items.Add(foundFiles, "*xlsx")
- Next
- End Sub
- Private Sub StartToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StartToolStripMenuItem.Click
- OrdnerAuslesen("C:\Temp\VB\Zahlungen")
- End Sub
Bis jetzt schaffe ich es nicht, foundFiles in DataSet1.ExcelFileDataTable abzufüllen... -
Echt nicht?
Hmm, dann solltest du mal ganz sorgfältig dieses Tut studieren:
codeproject.com/Articles/10351…ped-Dataset-for-Beginners
Da lernst du, wie man mittm ObjectBrowser sein typisiertes Dataset untersuchen kann, und herausfindet, welche typisierten Methoden alle angelegt wurden.
Ganz zentral dieAddXXX
-Methode (mehrfach überladen), und welche Überladung die sinnreichste ist, um codeseitig Datensätze anzulegen.
So findest du diesen Ansatz:VB.NET-Quellcode
- Imports System.IO
- Imports MyRootNamespace.DataSet1
- Private Sub OrdnerAuslesenFuerVorlage(path As String, rwVorlage As VorlageRow)
- For Each fullname In Directory.GetFiles(path, "*.xlsx") 'my.Computer ist Müll (schon weils im Objectbrowser nicht dokumentiert ist) - nimm Framework-Methoden
- ExcelFile.AddExcelFileRow(rwVorlage, fullname)
- Next
- End Sub
Aber es kommt noch besser.
Die VorlageRow - du hast ja bekanntlich schon einige angelegt - die kannste sogar aus dem pfad ableiten, wenn du deine Pfade sinnreich benennst, entsprechend deiner Vorlagen:VB.NET-Quellcode
- Imports System.IO
- Imports MyRootNamespace.DataSet1
- Private Sub KundeOrdnerAuslesen(path As String)
- Dim di = New DirectoryInfo(path) 'DirectoryInfo, FileInfo - wichtige Klassen!!
- Dim kundeName = di.Name
- Dim rwVorlage = myDataset1.Vorlage.First(Function(rw) rw.Name = kundeName)
- For Each fi In di.GetFiles("*.xlsx") ' (as FileInfo)
- ExcelFile.AddExcelFileRow(rwVorlage, fi.Fullname)
- Next
- End Sub
- Private Sub StartToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StartToolStripMenuItem.Click
- KundeOrdnerAuslesen("C:\Temp\VB\Zahlungen\KundeA")
- End Sub
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
Der Objektkatalog ist sehr interessant und umfangreich! Noch mehr Infos und Wissen, welches man kennen müsste... Werde sicher noch ausgibig damit arbeiten.
Wenn ich deinen Ansatz für "OrdnerAuslesenFuerVorlage" richtig verstehe, sind meine Vorlagen als xlsx-Files in einem Ordner, deren fullnames ausgelesen werdenErfinderDesRades schrieb:
For Each fullname In Directory.GetFiles(path, "*.xlsx")
Und mitErfinderDesRades schrieb:
ExcelFile.AddExcelFileRow(rwVorlage, fullname) -
lies beides aus ExcelFile und Tabelle(n) die in dieser vorhanden sind
VB.NET-Quellcode
- Imports System.IO
- Imports System.Data.OleDb
- Public Class Form1
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim di As New DirectoryInfo("D:\Excelfolder")
- Dim ExcelFiles As FileInfo() = di.GetFiles("*.xls*")
- Dim fi As System.IO.FileSystemInfo
- For Each fi In ExcelFiles
- Using con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fi.FullName & ";Extended Properties='Excel 12.0 Xml;HDR=YES'")
- 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()
- Debug.WriteLine(fi.FullName & ";" & tableName)
- Next
- End Using
- Next
- End Sub
- End Class
-
blam schrieb:
Wenn ich deinen Ansatz für "OrdnerAuslesenFuerVorlage" richtig verstehe, sind meine Vorlagen als xlsx-Files in einem Ordner, deren fullnames ausgelesen werdenErfinderDesRades schrieb:
For Each fullname In Directory.GetFiles(path, "*.xlsx")
Deine Vorlage-Datensätze sind keine Excel-Files, und werden auch nicht aus Excel-Files eingelesen.
Deine Vorlage-Datensätze musst du einmalig händisch eingeben, und abspeichern. Dann können sie aus der Dataset.xml-Datei gelesen werden. Aus einer! Alle Vorlagen aus einer Datei! Überhaupt alle Datensätze aus nur einer Datei!
Nämlich aus der Dataset.xml-Datei!! Es ist eine xml-Datei!! Es ist keine Excel-Datei!!
Datensätze: xml-Datei!! Nicht!!: Excel-Datei!
blam schrieb:
Und mitErfinderDesRades schrieb:
ExcelFile.AddExcelFileRow(rwVorlage, fullname)
Die Zeile legt einen ExcelFile-Datensatz an - der genaue Datentyp des Datensatz-Objektes lautet:ExcelFileRow
. Deswegen heisst die Methode:.AddExcelFileRow()
-
-
Hmm - das hast du schoma besser gewusst:
ErfinderDesRades schrieb:
@Kasi: Ich glaub, dir ist die Problemstellung dieses Threads nicht richtig klar:ErfinderDesRades schrieb:
Ist das richtig, dass es darum geht, aus Excel-Workbooks verschiedener Art Transaktions-Datensätze auszulesen, und in ein einheitliches Format zu überführen?blam schrieb:
Ja genau darum geht es.Zahlungen
im typDataset.
Zahlungen
ist die Tabelle, wo in einheitlichem Format die per Excel-Sheet uneinheitlich angelieferten Zahlungs-Informationen deiner Kunden letztendlich landen sollen.
-
Ich befürchte, wir reden nicht vom Gleichen oder ich verstehe dich einfach nicht.
Wenn doch Zahlungen die Tabelle ist, wo die uneinheitlichen Excel-Sheets meiner Kunden landen sollen, ist das doch die Vorlage. So sollen die uneinheitlichen Excel-Sheets strukturiert bzw. vereinheitlicht werden. Im ColumnDataGridView mache ich die Zuteilung, welche Spalte aus dem Kunden Excel-Sheet zu welcher Spalte von meinem einheitlichen Format Zahlungen gehört. So verstehe ich es zumindest. -
Vorlage
ist eine DataTable.
Dieser DataTable sind weitere DataTables untergeordnet, deren Datensätze genauere Aussagen dazu machen, wie ein ExcelSheet auszulesen ist, damit ein sinnvoller Datensatz inZahlungen
gebildet werden kann.
Vielleicht ist Vorlage nicht der beste Name dafür - es handelt sich um komplexe MappingInformationen (welches Blatt, welche Spalten,...), also wie die Daten eines ExcelSheets aufZahlungen
zu mappen sind.
Zahlungen
ist keine Vorlage. Eine Vorlage ist etwas, was man (so ähnlich) nachmacht. Du machst aber keine Zahlungen nach.
Du willst Zahlung-Datensätze erstellen, aus Excel-Dateien.
Die Zahlung-Datensätze sollen ein einheitliches Format aufweisen. (Nicht so wie die Excel-Dateien, wo der eine Kunde den Betrag in spalte1 schreibt, und der nächste in Spalte2.)
Ja und diese Zahlung-Datensätze kannste in der TabelleZahlungen
ablegen - oder wo willst du damit hin? -
Immerhin verstehe ich den Teil, dass die Daten aus den Kunden Excel-Daten am Ende in der Tabelle Zahlungen abgelegt werden sollen, richtig. Um überhaupt in die richtige Richtung zu suchen muss ich den Ablauf verstehen, wie du ihn dir vorstellst... Ich beziehe mich auf mein Bild "Data-Set".
Vorlage "Name", hier kommt der Kundenname rein, händisch erfasst - ExcelFile "FullName" hier kommt der FullName des ExcelFiles rein, welches sich im vorgegebenen Ordner befindet - Sheet "Name" hier sollen die Namen der verschiedenen Sheets von dem ExcelFile aus dem Pfad "FullName" rein - Column "xlsColName" hier werden die Spaltennamen des jeweiligen Sheets aufgeführt - ColumnMapping "dtsColName" sind die einheitlichen Spaltennamen aus Zahlungen (händisch erstellt) und können unter Column den richtigen Spalten mittels DropDownButton zugeordnet werden.
Bei mir sieht das jetzt so aus:
Die ListBox unten rechts ist nur zur Kontrolle... Ich arbeite aber schon mit der Überwachen-Funktion -
ich sehe da nur 4 leere DGVs - keine Ahnung, was die darstellen - nichtmal Spalten-Überschriften.
Da habich in post#30 mehr erahnen können.
Ich täte empfehlen, mach jedes DGV in eine Groupbox, und beschrifte sie sinnvoll.
Hihi - in #31 gebe ich dir bereits ein Tut, wie man mit paar Klicks ein GUI basteln kann, sinnvoll und einigermassen ergonomisch.
Und tu auch Daten rein.
was für eine "Überwachen-Funktion"?
-
-
Ähnliche Themen
-
6 Benutzer haben hier geschrieben
- blam (34)
- ErfinderDesRades (32)
- Kasi (7)
- petaod (2)
- mrMo (1)
- ISliceUrPanties (1)