Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!

MS Excel CSV Import mit VB.NET

Hier ein kleines Visual Basic .NET Beispiel, mit dem veranschaulicht wird, wie der .NET DataTable Adapter dazu verwendet werden kann wie beliebige Datenquellen und Ziele in den FlowHeater eingebunden werden können.

Excel CSV Import Definition
Excel CSV Import Definition

Das Beispiel ist natürlich als Visual Studio Solution im Quellecode verfügbar.

Hinweis: Das Beispiel dient nur zur Demonstration. Der Excel Import/Export ist mit dem Excel Adapter wesentlich einfacher durchzuführen! Wenn Sie das Beispiel ausprobieren möchten, benötigen Sie mindestens Microsoft Excel 97 auf Ihrem Rechner!

 

DataTable Adapter Konfiguration
DataTable Adapter Konfiguration

Nachdem Sie die Definition geöffnet haben sieht Ihr Bildschirm ungefähr so aus wie oben dargestellt. Die READ Seite ist nicht sehr spektakulär, hier wird lediglich eine kleine CSV Textdatei "MS-Excel-CSV-Import.txt" gelesen. Gehen wir gleich zum Configurator der WRITE Seite über. Die Excel-Import.dll beinhaltet nur eine Visual Basic .NET Funktion, die den Inhalt der WRITE Seite in eine Excel Arbeitsmappe "Output.xls" am Ende anfügt, bzw. falls die Excel Arbeitsmappe noch nicht existiert vorher anlegt.

Führen Sie die Definition aus und schauen Sie sich den VB .NET Source Code an. Die Visual Studio Solution finden Sie im Verzeichnis Examples\DE\DataTableAdapter\VSExcelImport.

VB.NET Code für den Excel Import

Public Sub FlowHeater_SetDataTable(ByRef dt As DataTable)

   
If (dt.Rows.Count = 0) Then
   
    ' Testaufruf aus FlowHeater Designer oder nichts zu tun
       
Exit Sub
    End
If

    Dim
excel As Object

   
'Excel Object erzeugen
    excel = CreateObject(
"Excel.Application")
   
'excel.Visible = True

   
Dim filename As String
    filename = Path.Combine(System.Environment.CurrentDirectory,
"Output.xls")

   
' Falls noch nicht vorhanden anlegen
   
If File.Exists(filename) Then
        excel.Workbooks.Open(filename)
   
Else
        excel.Workbooks.Add()
        excel.ActiveWorkbook.SaveAs(filename)
   
End If

   Dim
workbook As Object
    workbook = excel.ActiveWorkbook

   
If workbook.Worksheets.Count() = 0 Then
        workbook.Worksheets.Add()
   
End If

    Dim
worksheet As Object
    worksheet = workbook.Worksheets(1)

   
Dim nRow As Integer
    nRow = 1

   
' 1. freie Zeile suchen
   
Do While True
        Dim
range As Object
        range = worksheet.Cells(nRow, 1)

       
Dim cellValue As String
        cellValue =
String.Empty

       
If range.Value2 <> Nothing Then
           
cellValue = range.Value2.ToString()
       
End If

        If
cellValue.Length() = 0 Then
            Exit
Do
        End
If

        nRow = nRow + 1
   
Loop

    Dim
dr As DataRow
   
For Each dr In dt.Rows
       
Dim col As DataColumn
       
Dim nCol As Integer
        nCol = 1
       
For Each col In dt.Columns
            worksheet.Cells(nRow, nCol) = dr(col)
            nCol = nCol + 1
       
Next col
        nRow = nRow + 1
   
Next dr
   
    workbook.Save()
    excel.Quit()

End Sub

 

Microsoft®, Windows®, Excel®, Visual Basic® sind eingetragene Markenzeichen der Microsoft Corporation

®