参照設定
Excel処理をする場合、参照にMicrosoft Excel 14.0 Object Libraryを追加する必要があります。今回はMicrosoft Office 14.0 Object Libraryも追加しておきます。
([14.0]はバージョンです。バージョンによって機能も多少異なります)
追加方法は、ソリューション エクスプローラーで参照を選び、右クリックして 参照の追加を選びます。
参照マネージャーが起動したらCOM - タイプライブラリから下記のようにライブラリにチェックをします。(下記画面は最近使用したので分かりやすいように「最近使用したファイル」から選択してます)
ソリューション エクスプローラーを確認するとMicrosoft.Office.CoreとMicrosoft.Office.Interop.Excelが追加になった事が分かります。
フォーム
今回は下記のようにExcelファイルを①新規にオープンする場合と、②一度ファイルを選択し、既存ファイルをオープンする場合の2パターンをご紹介します。
usingステートメント
usingステートメントに下記のようにMicrosoft.Office.Interop.Excelを追加します。
using Microsoft.Office.Interop.Excel;
オブジェクトの生成
次に Microsoft.Office.Interop.Excel.Application オブジェクトを生成します。
Microsoft.Office.Interop.Excel.Application ExcelApp
= new Microsoft.Office.Interop.Excel.Application();
ついでにExcelワークブック、ワークシートのオブジェクト生成は下記となります。
Microsoft.Office.Interop.Excel.Workbook ExcelWB;
Microsoft.Office.Interop.Excel.Worksheet ExcelWS;
新規作成
「新規」ボタンを押すと、Excelファイルを新規作成する場合は下記のように記述します。(Excelの非表示/表示はレスポンスを向上)
private void cmdNewExcel_Click(object sender, EventArgs e)
{
// Excel非表示
if (ExcelApp.Visible == true)
ExcelApp.Visible = false;
// Excelファイル新規オープン
ExcelWB = ExcelApp.Workbooks.Add();
// Excel表示
if (ExcelApp.Visible == false)
ExcelApp.Visible = true;
}
{
// Excel非表示
if (ExcelApp.Visible == true)
ExcelApp.Visible = false;
// Excelファイル新規オープン
ExcelWB = ExcelApp.Workbooks.Add();
// Excel表示
if (ExcelApp.Visible == false)
ExcelApp.Visible = true;
}
既存のExcelファイルオープン
「選択」ボタンを押してファイルパス・ファイル名を取得・テキストボックスにセットし終わった後、「開く」ボタンを押して選択した Excelファイルを開く場合は下記のように記述します。
private void cmdOpenExel_Click(object sender, EventArgs e)
{
// テキストボックスからファイル名(フルパス)を取得する
TargetFile = txtExcelFile.Text;
// Excel非表示
if (ExcelApp.Visible == true)
ExcelApp.Visible = false;
// Excelファイルオープン
ExcelWB = ExcelApp.Workbooks.Open(TargetFile);
// Excel非表示
if (ExcelApp.Visible == false)
ExcelApp.Visible = true;
}
{
// テキストボックスからファイル名(フルパス)を取得する
TargetFile = txtExcelFile.Text;
// Excel非表示
if (ExcelApp.Visible == true)
ExcelApp.Visible = false;
// Excelファイルオープン
ExcelWB = ExcelApp.Workbooks.Open(TargetFile);
// Excel非表示
if (ExcelApp.Visible == false)
ExcelApp.Visible = true;
}