C# で Microsoft Office をインストールせずに Excel ファイルを作成する方法
C# を使用して、Microsoft Office をインストールせずに Excel ファイル (.XLS, .XLSX) を作成することができます。これは、Open XML SDK 2.5 を利用することで実現できます。この SDK は、Microsoft Office ファイル形式の仕様に基づいて開発されており、プログラムから直接これらのファイルを作成、読み込み、編集することが可能です。
手順
-
NuGet パッケージのインストール
- Visual Studio のソリューションエクスプローラーでプロジェクトを右クリックし、「NuGet パッケージの管理」を選択します。
- 「NuGet パッケージの管理」ウィンドウで、「Open XML SDK 2.5」を検索し、インストールします。
-
必要な名前空間の参照
- コードの冒頭で、以下の名前空間を参照します。
using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet;
このコードでは、新しい Excel ファイルを作成し、シートを追加し、セルに値を設定します。その後、ファイルを保存します。
より複雑な操作
- フォーマット設定: フォント、色、罫線などを設定することができます。
- 計算式: 数式をセルに挿入することができます。
- グラフ: グラフを作成することができます。
- テーブル: テーブルを作成することができます。
Open XML SDK 2.5 を使用することで、これらの操作をプログラムから実行することができます。
注意
- Open XML SDK は、Microsoft Office のファイル形式を扱うためのツールです。Microsoft Office の機能を直接使用することはできません。
- Excel ファイルの互換性については、使用するバージョンやファイルの複雑さに依存します。
C# で Excel ファイルを作成するコード例 (Office 不要)
以下のコードは、Open XML SDK 2.5 を使用して、C# で Excel ファイル (.XLS, .XLSX) を作成する方法を示しています。この方法では、Microsoft Office をインストールする必要はありません。
コード例
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
namespace E xcelCreationExample
{
class Program
{
static void Main(string[] args)
{
// Create a new Excel file
using (SpreadsheetDocument document = SpreadsheetDocument.Create("MyExcelFile.xlsx", SpreadsheetDocumentType.Workbook))
{
// Add a workbook part
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add a sheets part
Sheets sheets = workbookPart.Workbook.AppendChild<Sheets>();
Sheet sheet = new Sheet() { Id = "Sheet1", Name = "Sheet1" };
sheets.AppendChild(sheet);
// Add a worksheet part
WorksheetPart worksheetPart = document.AddWorksheetPart();
worksheetPart.Worksheet = new Worksheet();
// Add a sheet data part
SheetData sheetData = worksheetPart.Worksheet.AppendChild<SheetData>();
// Add a row
Row row = new Row() { RowIndex = 1 };
sheetData.AppendChild(row);
// Add a cell
Cell cell = new Cell() { CellReference = "A1" };
cell.CellValue = new CellValue("Hello, World!");
cell.DataType = CellValues.String;
row.AppendChild(cell);
// Save the document
document.Close();
}
Console.WriteLine("Excel file created successfully.");
}
}
}
コードの説明
- 名前空間の参照:
DocumentFormat.OpenXml
,DocumentFormat.OpenXml.Packaging
,DocumentFormat.OpenXml.Spreadsheet
の名前空間を参照します。 - Excel ファイルの作成:
SpreadsheetDocument.Create
メソッドを使用して、新しい Excel ファイルを作成します。 - ワークブックパートの追加:
AddWorkbookPart
メソッドを使用して、ワークブックパートを追加します。 - シートパートの追加:
AppendChild<Sheets>
メソッドを使用して、シートパートを追加します。 - 行の追加:
Row
オブジェクトを作成し、シートデータパートに追加します。 - セルの追加:
Cell
オブジェクトを作成し、行に追加します。セルの値とデータ型を設定します。 - ファイルの保存:
Close
メソッドを使用して、ファイルを保存します。
NPOI
- 特徴: NPOI は、Apache POI の .NET バージョンです。Excel、Word、PowerPoint などの Microsoft Office ファイル形式を扱うことができます。
- 使用方法: NuGet パッケージをインストールし、必要な名前空間を参照します。その後、NPOI のクラスを使用して Excel ファイルを作成、読み込み、編集することができます。
ClosedXML
- 特徴: ClosedXML は、Excel ファイルを扱うためのシンプルな API を提供します。
EPPlus
- 特徴: EPPlus は、Excel ファイルを扱うための高性能なライブラリです。
これらの方法の比較
特徴 | Open XML SDK 2.5 | NPOI | ClosedXML | EPPlus |
---|---|---|---|---|
機能 | 豊富な機能 | 豊富な機能 | シンプルな API | 高性能 |
性能 | 中程度 | 中程度 | 高い | 高い |
学習コスト | 高 | 中 | 低 | 中 |
選択基準
- 必要な機能: どの程度の機能が必要かによって選択します。
- 性能: 性能が重要な場合は、ClosedXML または EPPlus を検討します。
- 学習コスト: 学習コストが低い場合は、ClosedXML を検討します。
c# .net excel