\

c#でExcelを編集可能なライブラリ

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ファイルを開き、再計算して保存して終了という処理を行うコードです。 一部の変数定義や値セットを省略しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//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ファイルを新規作成して保存するコードです。

1
2
3
4
5
6
7
8
9
10
11
12
//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)のファイルも読み書きができるライブラリです。

公式リポジトリの中にサンプルコードが豊富に格納されています。有り難いですね。

https://github.com/tonyqus/npoi/tree/master/examples

サンプルコード

NPOIは他のライブラリに比べると、分かりにくい印象です。

1
2
3
4
5
6
7
8
9
10
11
12
//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));
}

作業効率化を目的としたWindows・OfficeVBAアプリケーションを開発します

詳しくはこちらに記載しております。不明な点がありましたら、お問い合わせフォームからご連絡をお願いします。

https://usefuledge.com/appdev.html

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱