C#を使ってExcelファイルを操作したいと考えたことはありませんか?
業務の自動化やレポートの出力など、Excelとの連携は非常に便利です。
本記事では、C#からExcelファイルを読み書きする基本的な方法を、初心者にもわかりやすく解説します。
Microsoft.Office.Interop.ExcelやOpenXML、EPPlusといった代表的なライブラリの使い方も紹介するので、ニーズに合わせた選択が可能です。
C#からExcelを操作するには、主に以下の3つの方法があります。
この中で特に扱いやすいのはEPPlusですが、用途に応じて最適な選択を行うことが大切です。
Visual Studioでプロジェクトを作成した後、以下の手順でExcel Interopを追加します。
using Excel = Microsoft.Office.Interop.Excel;
class Program
{
static void Main()
{
var excelApp = new Excel.Application();
var workbook = excelApp.Workbooks.Add();
var worksheet = (Excel.Worksheet)workbook.Sheets[1];
worksheet.Cells[1, 1] = "Hello, Excel!";
workbook.SaveAs("C:\\temp\\sample.xlsx");
workbook.Close();
excelApp.Quit();
}
}
Open XMLはExcelファイルを構造的に操作する方法です。Officeがインストールされていない環境でも利用できます。
NuGetから以下のパッケージを追加します。
DocumentFormat.OpenXml
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
public class ExcelCreator
{
public void CreateExcelFile(string filePath)
{
using (SpreadsheetDocument document = SpreadsheetDocument.Create(filePath, DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet()
{
Id = workbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "Sheet1"
};
sheets.Append(sheet);
workbookPart.Workbook.Save();
}
}
}
EPPlusは、Officeのインストール不要で、Excelファイルの読み書きができるライブラリです。最も簡単に使える方法として人気があります。
Install-Package EPPlus
using OfficeOpenXml;
using System.IO;
class Program
{
static void Main()
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells[1, 1].Value = "こんにちは、Excel!";
var fileInfo = new FileInfo("C:\\temp\\epplus_sample.xlsx");
package.SaveAs(fileInfo);
}
}
}
Excelファイルからデータを読み込むのも、EPPlusなら簡単です。
using (var package = new ExcelPackage(new FileInfo("C:\\temp\\epplus_sample.xlsx")))
{
var worksheet = package.Workbook.Worksheets["Sheet1"];
string value = worksheet.Cells[1, 1].Text;
Console.WriteLine(value);
}
このようにセルの値を取得して、業務システムに取り込むことが可能です。
用途 | 推奨方法 |
---|---|
Windowsクライアントアプリでの利用 | Interop |
サーバー・クラウド上での処理 | EPPlus または OpenXML |
ファイル構造を細かく制御したい場合 | Open XML SDK |
C#でのExcel操作には複数の方法があり、それぞれに特徴があります。
初めての方には、扱いやすくてコードが短いEPPlusの使用をおすすめします。
用途や環境に応じて、適切なライブラリを選び、Excel操作を効率化していきましょう。