2016-04-09 22 views
0

Dieses Programm liest eine Excel-Datei in ein zweidimensionales Array. Jetzt muss ich die Ergebnisse in einer gitterähnlichen Ansicht anzeigen wie die ursprüngliche Excel-Datei. Mir wurde gesagt, DataGridView könnte möglicherweise helfen. Ich bin mir nicht sicher, wie es weitergehen soll.Mit VB.net wie würde ich DataGridView implementieren, um Inhalte des zweidimensionalen Arrays im Formular anzuzeigen?

Imports Microsoft.Office.Interop.Excel 

Public Class Form1 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

Erstellen Sie eine neue Anwendung.

Dim excel As Application = New Application 

Excel-Tabelle öffnen.

Dim w As Workbook = excel.Workbooks.Open("G:\PACE\New Style Project\01.xls") 

Schleife über alle Blätter.

For i As Integer = 1 To w.Sheets.Count 

Holen Sie sich Blatt.

 Dim sheet As Worksheet = w.Sheets(i) 

Get Reichweite.

 Dim r As Range = sheet.UsedRange 

Load all cells into 2d array. 
     Dim array(,) As Object = r.Value(XlRangeValueDataType.xlRangeValueDefault) 

Scannen Sie die Zellen.

 If array IsNot Nothing Then 
      'Console.WriteLine("Length: {0}", Array.Length) 

Get Grenzen des Arrays.

  Dim bound0 As Integer = Array.GetUpperBound(0) 
      Dim bound1 As Integer = Array.GetUpperBound(1) 

      'Console.WriteLine("Dimension 0: {0}", bound0) 
      'Console.WriteLine("Dimension 1: {0}", bound1) 

Schleife über alle Elemente.

  For j As Integer = 1 To bound0 
       For x As Integer = 1 To bound1 
        Dim s1 As String = Array(j, x) 
        'Console.Write(s1) 
        'Console.Write(" "c) 


       Next 
       'Console.WriteLine() 

      Next 
     End If 
    Next 

    ' Close. 
    w.Close() 
End Sub 

End Class

+0

Wir hoffen, dass Ihr Problem gelöst wurde installieren. Wenn nicht, denken Sie vielleicht darüber nach, Ihre Frage zu aktualisieren ... http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 – Monty

Antwort

1

Eine schnelle und einfache Möglichkeit, dies zu erreichen Microsoft.ACE.OLEDB.12.0 zu verwenden ist .....

hier ist ein einfaches Beispiel ....

Dim DataSet As New DataSet 
    Try 
     Dim con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "<Path to your Excel file>" + ";Extended Properties=Excel 12.0;") 

     con.Open() 
     Dim atatable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) 

     Dim sql As String 

     Dim excelcomm = New OleDbCommand() 
     Dim adexcel = New OleDbDataAdapter(excelcomm) 

     Dim tableInfo = con.GetSchema("Tables") 
     For Each row As DataRow In tableInfo.Rows 
      Console.WriteLine("{0}", row("TABLE_NAME").ToString) 
      Dim sheetname = row("TABLE_NAME").ToString 

      sql = "select * from [" + sheetname + "]" 
      adexcel.SelectCommand = New OleDbCommand(sql, con) 
      adexcel.Fill(DataSet, sheetname) 
     Next 


    Catch ex As Exception 

    End Try 
    DataGridView1.DataSource = DataSet.Tables(0) ' set DataGridView1 to display first table 

Versuchen Sie den Code zuerst, wenn Sie einen Fehler

the 'microsoft.ace.oledb.12.0' provider is not registered on the local machine 

bei 'con.Open()', dann müssen Sie möglicherweise die AccessDatabaseEngine.exe (32-Bit-Version nicht die 64-Bit-Version) von hier

https://www.microsoft.com/en-us/download/details.aspx?id=13255

Verwandte Themen