C#でExcelファイルを読み書きする方法
はじめに
C#では、Excelファイルの読み書きを行う方法がいくつかあります。本記事では、主にOpenXml
とNPOI
の2つのライブラリを用いて、Excelの基本的な操作を解説します。
環境の準備
まず、以下のライブラリをインストールします。
- OpenXml:
Install-Package DocumentFormat.OpenXml
- NPOI:
Install-Package NPOI
OpenXmlを使ったExcel操作
Excelファイルの作成
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System;
class Program
{
static void Main()
{
using (SpreadsheetDocument document = SpreadsheetDocument.Create("sample.xlsx", SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = document.WorkbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet() { Id = document.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };
sheets.Append(sheet);
workbookPart.Workbook.Save();
}
Console.WriteLine("Excelファイルを作成しました。");
}
}
Excelファイルの読み込み
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System;
class Program
{
static void Main()
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open("sample.xlsx", false))
{
WorkbookPart workbookPart = document.WorkbookPart;
SheetData sheetData = workbookPart.WorksheetParts.First().Worksheet.GetFirstChild();
foreach (Row r in sheetData.Elements())
{
foreach (Cell c in r.Elements())
{
Console.Write(c.CellValue.Text + " ");
}
Console.WriteLine();
}
}
}
}
|
NPOIを使ったExcel操作
Excelファイルの作成
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
class Program
{
static void Main()
{
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("Hello, Excel!");
using (FileStream stream = new FileStream("sample.xlsx", FileMode.Create, FileAccess.Write))
{
workbook.Write(stream);
}
}
}
Excelファイルの読み込み
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
class Program
{
static void Main()
{
using (FileStream stream = new FileStream("sample.xlsx", FileMode.Open, FileAccess.Read))
{
IWorkbook workbook = new XSSFWorkbook(stream);
ISheet sheet = workbook.GetSheetAt(0);
IRow row = sheet.GetRow(0);
ICell cell = row.GetCell(0);
Console.WriteLine(cell.StringCellValue);
}
}
}
まとめ
C#でExcelファイルを扱う方法にはOpenXml
とNPOI
があり、それぞれに利点があります。
– OpenXml: Microsoft公式ライブラリで軽量だが、操作がやや複雑
– NPOI: 直感的な操作が可能で、より柔軟な機能を提供
プロジェクトの要件に応じて適切なライブラリを選びましょう。