c#でExcelファイルの読み込み・書き込み処理ができると、システムの幅が広がります。 VBAでしたらExcel上でしか実行できませんが、c#で実現できれば、ウェブアプリにしたりWindowsアプリにしたり AWS Lambda などのクラウド上にのせたり、いろいろなことができるようになります。
この記事では、c#でExcelを編集可能なライブラリについて紹介します。
Microsoft.Office.Interop.Excel
公式ドキュメント https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel
Microsoft.Office.Interop.Excel は Excelアプリケーションを直接操作するライブラリです。そのため、実行するサーバーやPCにExcelがインストールされている必要があります。
ただし、メリットもあり、再計算などExcelアプリケーションの機能がすべて使用できるのもその1つです。
サンプルコード
Excelファイルを開き、再計算して保存して終了という処理を行うコードです。 一部の変数定義や値セットを省略しています。
//using Excel = Microsoft.Office.Interop.Excel;
// Excelインスタンスを生成する
Excel.Application xlApp = new Excel.Application();
// Excelウィンドウを表示しない
xlApp.Visible = false;
// Excel警告メッセージを表示しない
xlApp.DisplayAlerts = false;
try
{
// Excelファイルを開く
Excel.Workbook templateBook = xlApp.Workbooks.Open(inputFilePath);
//再計算
xlApp.CalculateFull();
// xlsx 形式で出力ファイルパスへ保存する
templateBook.SaveAs(outputFilePath);
//Excelファイルを閉じる
templateBook.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
xlApp.Quit();
// Excelインスタンスを破棄する
}
EPPlus
公式ドキュメント https://epplussoftware.com/
Github https://github.com/EPPlusSoftware/EPPlus
Nuget https://www.nuget.org/packages/EPPlus/
ライセンスが LGPL から Poly Noncommercial に変更になっています。
公式ドキュメントには、コマーシャルライセンス(Commercial license)と開発者(Developer)の2つのライセンスの表記があります。 ライセンスドキュメントを熟読してライブラリ選定が必要です。
サンプルコード
EPPlusを使用して、xlsxファイルを新規作成して保存するコードです。
//using OfficeOpenXml;
public void EPPlusTutorial1()
{
FileInfo xlsFile = new FileInfo(@"d:\epplussample.xlsx");
using (var package = new ExcelPackage(xlsFile)){
var sheet = package.Workbook.Worksheets.Add(epplus);
sheet.Cells[A1].Value = Hello UE;
package.Save();
}
}
ClosedXML
Github https://github.com/ClosedXML/ClosedXML
Nuget https://www.nuget.org/packages/ClosedXML
ClosedXMLは、Excel2007形式(xlsx, xlsm)のファイルを作成、編集、書き込みするためのライブラリです。
サンプルコード
これも同じように、新規ブックファイルに書き込んで保存するコードです。
//using ClosedXML.Excel;
public void ClosedXMLTutorial1()
{
const string excelFilePath = @"d:\closedxmlsample.xlsx";
using (XLWorkbook wbook = new XLWorkbook())
{
var wsheet = wbook.Worksheets.Add(sample);
wsheet.Cell(A1).Value = "https://usefuledge.com/";
wbook.SaveAs(excelFilePath);
}
}
NPOI
Github https://github.com/tonyqus/npoi
Nuget https://www.nuget.org/packages/NPOI/
NPOIはExcel2007(xlsx)だけでなく、Excel2003(xls)のファイルも読み書きができるライブラリです。
公式リポジトリの中にサンプルコードが豊富に格納されています。有り難いですね。
サンプルコード
NPOIは他のライブラリに比べると、分かりにくい印象です。
//using NPOI.XSSF.UserModel;
//using NPOI.SS.UserModel;
public void NPOITutorial1()
{
string xlsFile = "@d:\npoisample.xlsx";
IWorkbook book = new XSSFWorkbook();
ISheet sheet = book.CreateSheet(npoisheet);
book.Write(new FileStream(xlsFile, FileMode.Create, FileAccess.ReadWrite));
}
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
コメント