MS Excel CSV Import mit VB.NET
Achtung : Der DataTable Adapter ist veraltet und wird nicht mehr weiterentwickelt! Alle hier beschriebenen Umwandlungen können besser und einfacher mit den integrierten Daten Adaptern durchgeführt werden. 
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.
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!
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
 
  
  
    
    


