C#
Excel

C#でエクセルを読み込みメモ

More than 3 years have passed since last update.

修正でエラーが出るのでもう一度投稿

visual studioでの設定

EXCELCOMの参照を追加
excel_01.png
excel_02.png

エクセルファイルのオープンとクローズ

qiita.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace excel
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            //エクセルを非表示
            ExcelApp.Visible = false;

            //エクセルファイルのオープンと
            //ワークブックをの作成
            Microsoft.Office.Interop.Excel.Workbook WorkBook = ExcelApp.Workbooks.Open("ファイル名");

            //ワークブックを閉じる
            WorkBook.Close();
            //エクセルを閉じる
            ExcelApp.Quit();        
     }
    }
}

シートの取得とセルの値の取得

qiita.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace excel
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            //エクセルを非表示
            ExcelApp.Visible = false;

            //エクセルファイルのオープン
            Microsoft.Office.Interop.Excel.Workbook WorkBook = ExcelApp.Workbooks.Open("ファイル名");

            //1シート目の選択
            Microsoft.Office.Interop.Excel.Worksheet sheet = WorkBook.Sheets[1];
            sheet.Select();

            //A1セルのデータの取得
            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range("A1");
            if (range != null)
            {
                Console.WriteLine(range.Value);
            }

            //workbookを閉じる
            WorkBook.Close();
            //エクセルを閉じる
            ExcelApp.Quit();

        }
    }
}

シート数の取得

qiita.cs
//A1セルのデータの取得
var sheet_count = WorkBook.Sheets.Count

シートの取得

qiita.cs
//シート名から取得
Worksheet sheet = WorkBook.Sheets["シート名"];

//番号で取得
Worksheet sheet = WorkBook.Sheets[1];

セルの配列でのデータの取り方

qiita.cs
//A1セルのデータの取得
Microsoft.Office.Interop.Excel.Range range = sheet.Cells[1, 1];
if (range != null)
{
Console.WriteLine(range.Value);
}

連続データ数の取り方

qiita.cs
//A1セルから見たら下への連続データ数
int row_count = sheet.get_Range("A1").End[Microsoft.Office.Interop.Excel.XlDirection.xlDown].Row;

//A1セルから見たら右への連続データ数
int column_count = sheet.get_Range("A1").End[Microsoft.Office.Interop.Excel.XlDirection.xlToRight].Column;

セルのデータの書き込み

qiita.cs
//A1セルのデータの書き込み
Microsoft.Office.Interop.Excel.Range range = sheet.get_Range("A1");
if (range != null)
{
 range.Value = 10;
}

データの保存

qiita.cs
WorkBook.Save();