Excelファイルから数値でセル番号を指定してセルの内容を取得する
C#のプログラムで、Excelファイルを読み込みセルの値を表示するコードを紹介します。
概要
こちらの記事で紹介した方法はセルの位置を文字列("A1"など)で指定していましたが、
今回はforループを用いて複数のセルの内容を取得するため、添え字でセルの内容を参照する方法を紹介します。
事前準備: Microsoft.Office.Interop.Excel アセンブリの参照
Visual Studio を起動し、Windows Formアプリケーション(.NET Framework)を作成します。
プロジェクトの作成後、 Microsoft.Office.Interop.Excel アセンブリの参照を追加します。
参照の追加の手順は
こちらの記事を参照してください。
事前準備: Excelブックの作成
以下の内容のExcelファイルを用意します。
実装例
UI
下図のフォームを作成します。ボタンとMultilineプロパティをTrueに設定したテキストボックス、OpenFileDialogを配置します。
コード
下記コードを記述します。button1 のCickイベントを実装します。
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace ExcelFileRead
{
public partial class FormLoopRead : Form
{
public FormLoopRead()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = false;
Workbook wb = ExcelApp.Workbooks.Open(openFileDialog1.FileName);
Worksheet ws1 = wb.Sheets[1];
ws1.Select(Type.Missing);
for (int i = 1; i < 5; i++) {
Range rgn = ws1.Cells[i, 1];
dynamic val = rgn.Value2;
textBox1.Text += Convert.ToString(val) + "\r\n";
}
wb.Close(false);
ExcelApp.Quit();
}
}
}
}
解説
下記のコードでExcelアプリケーションオブジェクトを作成します。アプリケーションウィンドウは非表示にします。
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = false;
ワークブックを開き最初のワークシートを選択します。
Workbook wb = ExcelApp.Workbooks.Open(ExcelBookFileName);
Worksheet ws1 = wb.Sheets[1];
ws1.Select(Type.Missing);
4回ループします。(Excel表の最初から4行を読み込みます。)
for (int i=1; i < 5; i++) {
i行目1列のCellのRangeをrgnに格納します。左上のセルはCell[1,1]となります。rgn.Value2でセルの値を取得できます。取得したセルの内容をtextBox2に表示します。
Range rgn = ws1.Cells[i, 1];
dynamic val = rgn.Value2;
textBox2.Text += Convert.ToString(val)+"\r\n";
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。ファイルを開くダイアログが表示されます。先に作成したExcelブックのファイルを選択して開きます。
ファイルを開くと、テキストボックスに下図のテキストが表示されます。Excelワークシートに入力した値を読み取り、
テキストボックスに表示する動作が実装できています。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2011-01-04
改訂日: 2024-04-13