C# から Excelのデータを 参照したい。
Office が インストールされている Windows上 ならば COMインタフェース が一般的だが、今回は Officeが インストールされていない環境で の操作。
調べると、「Open XML SDK」と「ClosedXML」の2つが 一般的みたい。
Open XML SDK | ClosedXML | |
---|---|---|
開発元 | Microsoft | サードパーティー |
対象ファイル | Word/Excel/PowerPoint | Excel |
プラットフォーム | .Net Framework 3.5~ .Net Standard 1.0~ | .Net Framework 4.0~ .Net Standard 2.0~ |
ファイルの作成/編集 | ○ | ○ |
Excelの数式計算 | ○ | × |
オープンソース | ○ | ○ |
インストール | NuGet | NuGet |
コーディング | 煩雑 | 簡潔 |
どちらも、XML形式のドキュメントを対象にしているので、Excel2007からのデータ形式( xlsx, xlsm )が対象になる。
今回は ClosedXML を 使ってみたので 覚書。
C# への ClosedXML の組込みと動作確認
開発環境は :Microsoft Visual Studio Community 2019
テスト用のプロジェクトを作成して
「ツール」→「ツール」→「NuGet パッケージマネージャー」→「ソリューションの NuGet パッケージの管理」を選択
検索先を「参照」にして「検索ボックス」に「ClosedXML」と入力
対処のプロジェクトに チェックを入れて 「インストール」をクリック
「ソリューションの変更の確認」と 「ライセンスの同意」 をして プロジェクトへの組み込みは完了
using ClosedXML.Excel;
private string ReadCell()
{
String filepath = @"D:\temp\test.xlsx";
var wb = new XLWorkbook(filepath);
var ws = wb.Worksheets.Worksheet("sheet1"); //シート名
return ws.Cell("A1").Value.ToString(); //セル番地
}
private void WriteCell(String txt)
{
String filepath = @"D:\temp\test.xlsx";
var wb = new XLWorkbook(filepath);
var ws = wb.Worksheets.Worksheet(1); //シート番号
ws.Cell(1,1).Value = txt; //セルを行列指定
wb.Save(); //上書き保存
}
取りあえず 動いた (´・ω・`)