
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次元配列に変換することがよくあるので、是非利用してみてください。