【VB.Net】Excelを操作してみた~ClosedXMLを使う~

どうも!リョクちゃです。

Excelをアプリケーションで操作できるようにしたいなぁ
リョクちゃ
リョクちゃ
VB.NetではClosedXMLといったライブラリを使うことでできるよ!
お茶
お茶

今回は、ClosedXMLといわれるライブラリを使って、Excelを操作する方法、

主に、読み書きについて紹介します。

ちなみに前回の記事はこちら

普段私たちが使っているコンピュータにインストールされているシリアルポートの一覧を取得し、表示する方法を紹介しています。Windowsのデバイスマネージャの項目にあるポートの一覧をプログラム上で取得しするといった内容になります。シリアル通信する際の確認用に便利です。

スポンサーリンク




フォームの作成

以下のようなフォームを作成します。

①~⑭のコントロールについては以下の表のとおりです。

Noコントロール名前
1LabelLabel1
2LabelLabel2
3LabelLabel3
4LabelLabel4
5TextBoxtbxReadColumn
6TextBoxtbxReadRow
7TextBoxtbxWriteColumn
8TextBoxtbxWriteRow
9ButtonbtnRead
10LabelLabel5
11TextBoxtbxWriteText
12LabelLabel6
13LabellbReadResult
14ButtonbtnWrite

各コントロールのフォントは、メイリオの18ptを設定しています。

実行環境

筆者の実行環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.1

になります。

※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。

アプリケーションの目的

今回は以下の事ができることを目的とします。

  • “読み取る列”と”読み取る行”にそれぞれ値を入力し、読込むボタンを
    押すことで、指定のExcelファイルのシートから読み取ります。
  • “書込む列”と”書込む行”にそれぞれ値を入力し、書込むボタンを
    押すことで、指定のExcelファイルのシートに書込む値で入力された値を
    書込みます。

動作

動作としては、

  • tbxReadRowとtbxReadColumnにそれぞれ値を入力します。
  • btnReadを押すことで、指定のExcelファイルから入力した
    行と列のセルの値を読み取ります。
  • 読み取った値はlbReadResultに出力します。
  • tbxWriteRowとtbxWriteColumnにそれぞれ値を入力します。
  • tbxWriteTextに書き込む値を入力します。
  • btnWriteを押すことで、入力した行と列のセルに
    書込みたい値を指定のExcelファイルに出力します。

これらができることとします。

プログラム編

ClosedXMLのインポート方法

最初にClosedXMLを使えるようにするための準備について触れていきます。

作成したプロジェクトの

ツールタブ → NuGetパッケージマネージャー

→ ソリューションのNuGetパッケージの管理を選択します。

クリックしたら、NuGetソリューションタブが新たに開きます。

デフォルトでは、インストール済みが選択されていますので、参照を選択します。

検索ボックスに”ClosedXML”と入力します。

赤枠で囲まれた”ClosedXML”を選択し、

インストールしたいプロジェクトのチェックボックスにチェックを入れます。

選択をしたら、インストールをクリックします。

OKボタンを押します。

インストールが完了すると、プルジェクトの参照欄に

ClosedXMLが追加されます。

これでClosedXMLの準備は完了です。

インポートする際は、

Imports ClosedXML

と入力することで使えるようになります。

Excelファイルを読み取る準備

ClosedXMLを使ってExcelファイルを操作するには、次の準備を行います。

  • Excelブックの設定
  • Excelブックのシートの設定

Excelブックの設定

Dim 変数名 As New Excel.XLWorkbook(“操作するExcelファイルの絶対パス”)

Excelブックのシートの設定

上で設定した変数を使います。

Dim 変数名 As Excel.IXLWorksheet = 設定した変数名.Worksheet(“操作するシート名”)

これでExcelファイルを読み取る準備は完了です。

今回使うExcelファイルの用意

下図のようなExcelをテスト用に使用します。

ファイル名はtest.xlsxとしました。(シート名はSheet1です。)

これを例に、先ほどのExcelファイルを読み取る準備のコードを書いてみます。

Excelファイルのシートの読み取り

シートの指定の行・列のセルの値を読み取るには、

xlSheet.Cell(セルの番地).Value.ToString()

もしくは

xlSheet.Cell(行番号、列番号).Value.ToString()

で読み取ることができます。

.ToString()は文字列で受け取れるようにしています

例)text.xlsxから”りんご”と入力されたセルの値を読み取る場合

※xlSheetは例で宣言したIXLWorksheet変数

と書くことで読み取ることが可能です。

今回は、列と行が入力されるので入力値を受け取って読み取りたいセルをアプリケーションに

教えてあげる必要があります。

最初に入力値のチェックを行います。

この中に、読取りに関するコードを書いていきます。

この処理を読込みボタンが押されたら行いたいので、

読み込みボタンのClickイベント内に書きます。

Excelファイルのシートへの書き込み

シートの指定の行・列のセルの値を書き込むには、

シートの読み取り同様、Excelファイルの準備が必要になります。

Excelファイルのシートの指定のセルに書込む場合は、

xlSheet.Cell(セルの番地).Value = “書き込みたい値”

もしくは

xlSheet.Cell(行番号、列番号).Value = “書き込みたい値”

例)text.xlsxのC2セルに”赤い”と書き込みたい場合

※xlSheetは例で宣言したIXLWorksheet変数

と書くことで読み取ることが可能です。

これだけではセルへ書き込みはできたのですが、Excelファイルとしては未完成です。

いうならば編集はしたけど、保存されていない状態です。

Excelファイルを保存してあげる必要があります

これは

xlBook.Save()

でできます。

また、

xlBook.SaveAs(“保存するファイル名”)

とすることで名前を付けて保存ができます。

※xlBookはExcel.XLWorkbookで宣言した変数になります。

これも書き込むボタンが押されてから読み込むボタン同様の処理を書いていきます。

全体のコードはこちらになります。

実行編

実際に実行をしていきます。

プログラム起動時

読み取るセルの番地を入力

読取ったセルの情報を表示

C2にあるセルに”赤い”と書き込む場合

書込まれた

書込まれた値を読んでみます。

正しく書き込まれていることがわかります。

まとめ

今回ClosedXMLを使ったExcelの操作方法やClosedXMLのインポート方法を紹介しました。

ClosedXMLを使うことで簡単にExcelファイルを操作できるようになります。

ただし、.xlsxの拡張子のみがサポートされているので、.xlsが使用できません

これに関しては、別の方法を紹介していきたいと思います。

Excelファイル操作で悩んでる方の参考になれば嬉しいです。

最後までお読みいただきありがとうございます。

スポンサーリンク