VB.NET データテーブルから2次元配列へ変換

VB.NETで、DataTableから2次元配列へ変換する関数を紹介します。

コピーしたら使えるのでぜひ利用してみてください。

私はVB.NETで、EXCELを操作するときによく使用しています。

データテーブルを2次元配列に変換

すぐコピーできるように、関数だけ最初に張り付けておきます。

''' <summary>
''' datatableを2次元配列へ変換
''' </summary>
''' <param name="dt">データテーブル</param>
''' <param name="array">2次元配列</param>
''' <remarks>データテーブルを2次元配列に変換する</remarks>
Public Sub dtToArray(ByVal dt As DataTable, ByRef array(,) As Object)
    Try

        For y As Integer = 0 To dt.Rows.Count - 1
            For x As Integer = 0 To dt.Columns.Count - 1
                array(y, x) = dt.Rows(y)(x)
            Next
        Next

    Catch ex As Exception
        Throw
    End Try

End Sub

 

サンプルソース

こちらのサンプルでは、データテーブルを作成し、それを2次元配列へ変換しています。

Public Class frmDtArray
    Private Sub frmDtArray_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'データテーブル作成
        Dim dt As New DataTable
        dt.Columns.Add("sportId")
        dt.Columns.Add("sportNm")
        Dim dtrow As DataRow

        dtrow = dt.NewRow
        dtrow("sportId") = "0001"
        dtrow("sportNm") = "野球"
        dt.Rows.Add(dtrow)

        dtrow = dt.NewRow
        dtrow("sportId") = "0002"
        dtrow("sportNm") = "サッカー"
        dt.Rows.Add(dtrow)

        dtrow = dt.NewRow
        dtrow("sportId") = "0003"
        dtrow("sportNm") = "バスケット"
        dt.Rows.Add(dtrow)

        Dim array1(dt.Rows.Count, 1) As String
        dtToArray(dt, array1)

        For i As Integer = 0 To array1.GetLength(0) - 1

            '列の数(横)
            'GetLength(1)で列の数が取得できる
            '配列は0から始まるので -1 をする
            For k As Integer = 0 To array1.GetLength(1) - 1
                Console.Write(array1(i, k) & " ")
            Next

            Console.WriteLine()

        Next

    End Sub

    ''' <summary>
    ''' datatableを2次元配列へ変換
    ''' </summary>
    ''' <param name="dt">データテーブル</param>
    ''' <param name="array">2次元配列</param>
    ''' <remarks>データテーブルを2次元配列に変換する</remarks>
    Public Sub dtToArray(ByVal dt As DataTable, ByRef array(,) As Object)
        Try

            For y As Integer = 0 To dt.Rows.Count - 1
                For x As Integer = 0 To dt.Columns.Count - 1
                    array(y, x) = dt.Rows(y)(x)
                Next
            Next

        Catch ex As Exception
            Throw
        End Try

    End Sub
End Class

解説

4行目~23行目:DataTableを作成しています。
25行目:格納するための2次元配列を宣言 
26行目:変換用関数を呼び出す。
28~39行目:2次元配列の内容を確認
43~62行目:データテーブルを2次元配列へ変換

 

まとめ

データテーブルから2次元配列に変換する方法をまとめておきました。

EXCEL操作の時に、2次元配列に変換することがよくあるので、是非利用してみてください。

 

VB.NETの記事一覧

おすすめの記事