VB.NETで差し込み可能なメール転送ソフトの作成 エクセルファイル読込 #2
エクセルファイル読込
サンプルは以下からダウンロードできます。
メール転送するメールアドレスや差し込みデータ、添付ファイルはエクセルで事前に登録します。このエクセルファイルをDataGridViewに読込するプログラムを作成します。
エクセルファイルをDataGridViewに
エクセルファイルをDataGridViewに読込
1)新規プロジェクトを作成
新規プロジェクトは 「VB.NETでディスクトップアプリを作ってみよう」
と方法は同じです。
VisualBasic Windows ディスクトップを選択し
Windowsフォームアプリケーション(.NET Framework)をクリック
プロジェクト名 Mail_VB
場所を適当
ここでは、ソリューションをプロジェクトを同じフォルダに チェック
これで1つフォームが作成されます。
2)フォーム名の変更
ソリューション エクスプローラのForm1をクリックしfrmMainと変更します。 ダイアログではい
ソリューション エクスプローラ My Project をダブルクリックし
スタートアップフォームをFrmMain に変更しアイコンも変更します
3)アイコンとタイトルの変更
Iconをクリック アイコンを選択
Text で Mail_VB と入力
4)ツールの追加
ツールボックスから テキストボックスを2つ追加
RichTextBoxをドラックして追加
DataGridViewをドラックして追加
5)Nameの変更
以下のようにNameを変更します。
エクセルファイルの右横にボタンを追加しName Fef Text 参照とします。
6)参照の追加
参照ボタンをクリックし エクセルファイルを読込します。そのままでは読込できません
プロジェクトの参照の追加を選択します。
COMを選択し 検索BOXに Excel と入力します。
ここで Microsoft Excel 16.0 Object Library にチェックしOK
これで、読込準備は完了です
7)参照ボタンのPG
参照ボタンをダブルクリックし クリックイベントをPG
OpenFileDialog を作成し フィルターでエクセルファイルのみを表示
Filter = "エクセルファイル (*.xlsx)|*.xlsx"
DialogResult.OK OKな場合は 選択された文字をテキストボックスに代入
そのあとに、Call ShowXlsx()でDataGridView に読込する
'*********************************************************************************
'* エクセル参照ボタン
'*********************************************************************************
Private Sub ref_Click(sender As Object, e As EventArgs) Handles ref.Click
' OpenFileDialog のインスタンスを作成
Dim openFileDialog As New OpenFileDialog()
' フィルタを設定
openFileDialog.Filter = "エクセルファイル (*.xlsx)|*.xlsx"
' ダイアログを表示し、結果をチェック
If openFileDialog.ShowDialog() = DialogResult.OK Then
' 選択されたファイルのパスを取得
Dim selectedFile As String = openFileDialog.FileName
xlsxF.Text = selectedFile
Call ShowXlsx()
End If
End Sub
8)DataGridViewへ読込
リストの最上段に 以下を入力します。
これでエクセルが読込できます。
エクセルは固定で読込するように Str = 2 で設定しています。
DataGridView の初期化
DataTableを作成
エクセルから読込
DataGridViewにバインド
ヘッダーの列番号を登録
オブジェクトの解放
Imports Excel = Microsoft.Office.Interop.Excel
'*********************************************************************************
'* エクセルデータを DataGridViewに取り込み
'*********************************************************************************
Private Sub ShowXlsx()
If xlsxF.Text = "" Then Exit Sub
'****** DataGridView1 の初期設定 ********************************************
DataGridView1.ReadOnly = True '編集はしない
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect '行をすべて選択
DataGridView1.RowHeadersVisible = False '行セレクタを表示しない
DataGridView1.AllowUserToAddRows = False '空白を表示しない
DataGridView1.MultiSelect = False 'セル、行、列が複数選択されないようにする
'DataGridView1.AllowUserToResizeColumns = False 'ユーザーが列のサイズを変更できない
DataGridView1.AllowUserToResizeRows = False 'ユーザーが行のサイズを変更できない
'DataGridView1.RowTemplate.Height = 30 '行の高さの設定
'DataGridView1.DefaultCellStyle.Font = New Font("MS ゴシック", 10) 'フォント設定
'DataGridView1.ColumnHeadersDefaultCellStyle.Font = New Font("MS ゴシック", 10) 'ヘッタ フォント設定
Dim excelApp As New Excel.Application
Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Open(xlsxF.Text)
Dim excelWorksheet As Excel.Worksheet = excelWorkbook.Sheets(1)
Dim range As Excel.Range = excelWorksheet.UsedRange
Dim dt As New DataTable
Dim StR As Integer = 1
' カラムの追加
For i As Integer = 1 To range.Columns.Count
dt.Columns.Add("Column" & i)
Next
' データの行を追加
StR = 2 '2行目から読み込み
For i As Integer = StR To range.Rows.Count
Dim row As DataRow = dt.NewRow()
For j As Integer = 1 To range.Columns.Count
row(j - 1) = range.Cells(i, j).Value
Next
dt.Rows.Add(row)
Next
' データをDataGridViewにバインド
DataGridView1.DataSource = dt
'ヘッダーの番号
For i As Integer = 1 To range.Columns.Count
DataGridView1.Columns(i - 1).HeaderText = i.ToString() & "列"
Next
' Excelリソースの解放
excelWorkbook.Close(False)
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorksheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorkbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
excelWorksheet = Nothing
excelWorkbook = Nothing
excelApp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
End Sub
64bitパソコンに32bitのオフィスなどがある場合 以下のように
コンパイル時にエラーすることがあります。
この場合 My Project から X86でコンパイルしてみてください。
9)実行 画面
参照をクリック エクセルを開く
ダウンロードファイルにエクセルサンプルを入れてあります。
以下のようにDataGridView に読込されました。
02 エクセルファイル読込 はこれで終了です。
← 前の記事に戻る 次の記事に行く →
以下 仕事のホームページです。業務用パソコンソフトを開発販売しています、ご訪問いただけると幸いです。https://aonosys.jp/