非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

C#からExcelファイルを読み書きする方法(Microsoft.Office.Interop.Excel)

      2017/12/08

C#からExcelファイルを読み書きする場合は、Microsoft.Office.Interop.Excelというライブラリを使います。xlsxだけじゃなく、xlsファイルも読み書きできるので便利です。

[ad#top-1]

Microsoft.Office.Interop.Excelのダウンロード先

こちらからDLLファイルをダウンロードします。

 

画面中央の「Download」という赤いボタンを押してダウンロードしましょう。

 

oxppia.exeというファイルがダウンロードされます。これをダブルクリックすると指定したフォルダにライブラリ群が解凍されます。

 

こちらが解凍されたライブラリ群。この中から「Microsoft.Office.Interop.Excel.dll」というファイルが今回使用するライブラリです。ソースコードと同じフォルダにコピーしましょう。

 

ソースコードと同じフォルダにコピーすれば、コンパイルの際にDLLファイルを「/reference」オプションで指定すればOKです。以下を参照ください。

※あくまでcsc.exeを使ってコンパイルするやり方です。Visual Studioを使っている方はググればいっぱい検索できるのでそちらを参照ください。

 

今回のサンプルプログラム

今回のサンプルプログラムの紹介です。

まず、動きを見てもらい、最後にソースコード全文を紹介します。

まず起動すると、こんな感じのフォームが現れます。「Excelファイル読み込み」ボタンを押します。

 

すると、同じフォルダ内の「Book1.xlsx」が開きます。その中の「A1」セルの値を読み取って、メッセージボックスで表示します。

 

 

「A1」のメッセージボックスの「OK」ボタンを押すと次に進みます。

ExcelファイルのA1セルを「AAA1」という値に書き換えて、更にメッセージボックスでも表示します。

 

 

「OK」ボタンを押すと、Excelファイルも自動で閉じます。

…という簡単なプログラムです。

ちなみに、先ほどAAA1と書き換えたファイルを改めて開いてみると、たしかに書き換わっていることが確認できました。書き換えた後、ちゃんと保存してくれているってことがわかります。

 

Book.xlsxファイルは各自用意ください。

 

ソースコード

ソースコード全文を紹介します。

プログラムを作るにあったって以下のサイトを参考にしました。

 

上記サイトと異なるのはWindowsフォームにしたという点です。それ以外はほぼ同じ。

using System;
using System.Drawing;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

class Test{
  static void Main(){
    Application.Run(new ExcelTest());
  }
}

class ExcelTest : Form{
  public ExcelTest(){
    this.StartPosition = FormStartPosition.CenterScreen;
    this.Width = 400;
    this.Height = 250;
    this.Text = "Excel読み書きテスト";

    Button btn = new Button(){
      Text = "Excelファイル読み込み",
      Size = new Size(150, 30),
      Location = new Point(50, 50),
      Parent=this,
    };
    btn.Click += new EventHandler(this.btnClick);
  }

  private void btnClick(object sender, EventArgs e){
    string fileName = "C:\\Users\\...\\Book1.xlsx"; //Excelファイルのパス
    Excel.Application xlApp = new Excel.Application();
    if ( xlApp != null ){
      xlApp.Visible = true;
      Excel.Workbook wb = xlApp.Workbooks.Open(fileName,
                          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                          Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                          ((Excel.Worksheet)wb.Sheets[1]).Select(Type.Missing);
                          Excel.Range aRange = xlApp.get_Range("A1",Type.Missing) as Excel.Range;
      if ( aRange != null ){
        MessageBox.Show(aRange.Value2.ToString());
        aRange.Value2 = "AAA1";
        MessageBox.Show(aRange.Value2.ToString());
      }
      wb.Close(true, Type.Missing, Type.Missing);
      xlApp.Quit();
    }
  }
}
 

 

[ad#ad-1]

スポンサーリンク

 - C#応用編, Excel