【C#】ExcelCreatorでできること: 基本機能のコード例


業務でExcelCreatorを使うことになったのですが、調べても参考になる記事が少ない！
ということで、予習として随時まとめていきます。




## ExcelCreatorって何？

Excel ファイル(xlsx/xls 形式)を効率よくプログラム上で生成できる「Excel ファイル生成ツール」です。 Excel を使用せず、独自技術によりファイルを高速に生成します。

さまざまなサーバーやクラウド環境で Excel / PDF / HTML ファイルをダイレクトに生成するアプリケーションを構築できます。

※[Advance Software株式会社の公式サイト](https://www.adv.co.jp/product/product_excelcreator11.htm)から引用


## 環境
・Microsoft Visual Studio 2019
・[ExcelCreator 11.0 for .NET 体験版](https://www.adv.co.jp/download/download-confrm.php?skey=61N&ftype=D)


## Excelファイル作成(新規)
#### ・インスタンスの作成&Excelファイル作成：
新しいExcelファイルを作成する際、まずXlsxCreatorのインスタンスを作成します。その後、`CreateBook`メソッドを使用して新しいExcelファイルを生成します。
```C#
 XlsxCreator Xlsx = new XlsxCreator();
 Xlsx.CreateBook(fileName, 1, AdvanceSoftware.ExcelCreator.xlsxVersion.ver2010); //1は、シートの数
```


## Excelファイル作成(オーバーレイ/上書き)
#### ・テンプレート(既存のファイル)に値を追加して新しいファイルを作成：

```C#
Xlsx.OpenBook(fileName, templateName); 
```

## Excelファイルを閉じる
```csharp
// Excelファイルを保存して閉じる（引数は保存モード、PDFストリーム、ファイル削除フラグ）
bool closeMode = true; // Excelファイルを閉じる
Stream pdfStream = null; // PDFの出力ストリーム
bool isDeleteFile = false; // ファイルを削除しない
Xlsx.CloseBook(closeMode, pdfStream, isDeleteFile);
```

## シートの設定
#### ・シートの名前：
```csharp
// シートの名前を設定
Xlsx.SheetName = "Sheet1";
```

#### ・新しいシートを追加：
`AddSheet`メソッドを使用して新しいシートを追加します。ここでの引数1は、新しいシートをワークブックの最初の位置に追加することを意味します。
```C#
int sheetCount = 1; // 追加するシートの数
int insertPosition = 0; // 挿入位置（0から始まるインデックス）
Xlsx.AddSheet(sheetCount, insertPosition);
```

#### ・シートを削除：
```csharp
int sheetNo = 0; // 削除するシートのインデックス
int deleteCount = 1; // 削除するシートの数
Xlsx.DeleteSheet(sheetNo, deleteCount);
```

## 罫線の設定
#### ・Excelファイル内で罫線を設定する方法:

#### 1. 実線（黒）
上下左右の境界に黒色の実線を設定します。
```c#
Xlsx.Cell("B3").Attr.LineLeft(AdvanceSoftware.ExcelCreator.BorderStyle.Thin, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B3").Attr.LineTop(AdvanceSoftware.ExcelCreator.BorderStyle.Thin, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B3").Attr.LineRight(AdvanceSoftware.ExcelCreator.BorderStyle.Thin, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B3").Attr.LineBottom(AdvanceSoftware.ExcelCreator.BorderStyle.Thin, AdvanceSoftware.ExcelCreator.xlColor.Black);
```

#### 2. 太線（黒）
より太い黒色の罫線を上下左右に設定します。
```C#
Xlsx.Cell("D3").Attr.LineLeft(AdvanceSoftware.ExcelCreator.BorderStyle.Medium, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("D3").Attr.LineTop(AdvanceSoftware.ExcelCreator.BorderStyle.Medium, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("D3").Attr.LineRight(AdvanceSoftware.ExcelCreator.BorderStyle.Medium, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("D3").Attr.LineBottom(AdvanceSoftware.ExcelCreator.BorderStyle.Medium, AdvanceSoftware.ExcelCreator.xlColor.Black);
```

#### 3. 破線（黒）
黒色の破線をセルの境界に設定します。
```C#
Xlsx.Cell("F3").Attr.LineLeft(AdvanceSoftware.ExcelCreator.BorderStyle.Dashed, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F3").Attr.LineTop(AdvanceSoftware.ExcelCreator.BorderStyle.Dashed, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F3").Attr.LineRight(AdvanceSoftware.ExcelCreator.BorderStyle.Dashed, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F3").Attr.LineBottom(AdvanceSoftware.ExcelCreator.BorderStyle.Dashed, AdvanceSoftware.ExcelCreator.xlColor.Black);
```

#### 4. 点線（黒）
黒色の点線をセルの境界に設定します。
```C#
Xlsx.Cell("B5").Attr.LineLeft(AdvanceSoftware.ExcelCreator.BorderStyle.Dotted, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B5").Attr.LineTop(AdvanceSoftware.ExcelCreator.BorderStyle.Dotted, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B5").Attr.LineRight(AdvanceSoftware.ExcelCreator.BorderStyle.Dotted, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("B5").Attr.LineBottom(AdvanceSoftware.ExcelCreator.BorderStyle.Dotted, AdvanceSoftware.ExcelCreator.xlColor.Black);
```

#### 5. 二重線（黒）
黒色の二重線をセルの境界に設定します。
```C#
Xlsx.Cell("F5").Attr.LineLeft(AdvanceSoftware.ExcelCreator.BorderStyle.Double, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F5").Attr.LineTop(AdvanceSoftware.ExcelCreator.BorderStyle.Double, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F5").Attr.LineRight(AdvanceSoftware.ExcelCreator.BorderStyle.Double, AdvanceSoftware.ExcelCreator.xlColor.Black);
Xlsx.Cell("F5").Attr.LineBottom(AdvanceSoftware.ExcelCreator.BorderStyle.Double, AdvanceSoftware.ExcelCreator.xlColor.Black);
```

## 背景色の設定
#### ・背景パターン：

```C#
// 色（System.Drawing.Color 構造体）を設定
Xlsx.Cell("B7").Attr.BackColor = Color.Gray;   // 灰色
Xlsx.Cell("F3").Attr.Pattern = AdvanceSoftware.ExcelCreator.Pattern.DarkGray;   // 75％灰色
Xlsx.Cell("D3").Attr.Pattern = AdvanceSoftware.ExcelCreator.Pattern.MediumGray;   // 50％灰色
Xlsx.Cell("H3").Attr.Pattern = AdvanceSoftware.ExcelCreator.Pattern.LightGray;   // 25％灰色
Xlsx.Cell("J7").Attr.Pattern = AdvanceSoftware.ExcelCreator.Pattern.Gray125;   // 12.5％灰色
Xlsx.Cell("L7").Attr.Pattern = AdvanceSoftware.ExcelCreator.Pattern.Gray0625;  // 6.25％灰色
```

## 日付の設定と取得
```C#
// 現在時刻のシリアル値を取得し、複数セルに設定
DateTime today = DateTime.Now;
double doubleDate = today.ToOADate();

// さまざまな日付フォーマットで日付を設定
Xlsx.Cell("A2:A15").Double = doubleDate;
Xlsx.Cell("A2").Attr.Format = "[$-409]yyyy/m/d h:mm AM/PM;@";
Xlsx.Cell("A3").Attr.Format = "yyyy\"年\"m\"月\"d\"日\";@";
Xlsx.Cell("A4").Attr.Format = "yyyy\"年\"m\"月\";@";
// 他の日付フォーマットも同様に設定可能
```

## セルの値の設定と取得
```C#
// 整数、浮動小数点数、文字列の値を設定
Xlsx.Cell("B2").Long = 1234567890;  // 整数
Xlsx.Cell("B4").Double = 123.456D;  // 浮動小数点数
Xlsx.Cell("B5").Str = "Str プロパティで文字列設定";   // 文字列

// セルから値を取得
int num = Xlsx.Cell("B2").Long;
string str = Xlsx.Cell("B5").Str;
```

## セルの操作とクリア
```C#
// セルのコピー・貼り付け
Xlsx.Cell("B2:D9").Copy();      // セル範囲をコピー
Xlsx.Cell("B11").Paste();       // 先頭セルを指定して貼り付け

// セルのクリア
Xlsx.Cell("B3").Clear();                 // 値と書式をクリア
Xlsx.Cell("C3").Clear(CellClearMode.Attr);  // 書式のみをクリア
Xlsx.Cell("D3").Clear(CellClearMode.Value); // 値のみをクリア
```

## 行の操作

#### ・行の挿入 (RowInsert)：
```C#
Xlsx.RowInsert(2, 4);  // 3 行目に 4 行挿入 (第 2 引数省略時は 1 行のみ挿入)
```
#### ・行のクリア (RowClear)：
```C#
Xlsx.RowClear(2, 1);  // 3 行目を 1 行クリア (第 2 引数省略時は 1 行のみクリア)
```
#### ・行の削除 (RowDelete)：
```C#
Xlsx.RowDelete(2, 1);  // 3 行目から 1 行削除 (第 2 引数省略時は 1 行のみ削除)
```

#### ・行のコピー・貼り付け (RowCopy, RowPaste)：
```C#
Xlsx.RowCopy(2);      // 3 行目をコピー
Xlsx.RowPaste(4);     // 5 行目に貼り付け
//Xlsx.RowCopy(2, 4);  // RowPaste メソッド省略 (上記と同じ結果)
```

#### ・コピーした行の挿入 (RowInsertCopied)：
```C#
Xlsx.RowCopy(2);            // 3 行目をコピー
Xlsx.RowInsertCopied(3);    // 4 行目に挿入
//Xlsx.RowInsertCopied(2, 3);  // RowCopy メソッド省略 (上記と同じ)
```

## 列の操作

#### ・列の挿入 (ColumnInsert)：
```C#
Xlsx.ColumnInsert(2, 4);  // 3 列目に 4 列挿入 (第 2 引数省略時は 1 列のみ挿入)
```

#### ・列のクリア (ColumnDelete)：
```C#
Xlsx.ColumnClear(2, 1);  // 3 列目から 1 列削除 (第 2 引数省略時は 1 列のみ削除)
```

#### ・列の削除 (ColumnDelete)：
```C#
Xlsx.ColumnDelete(2, 1);  // 3 列目から 1 列削除 (第 2 引数省略時は 1 列のみ削除)
```

#### ・列のコピー・貼り付け (ColumnCopy, ColumnPaste)：
```C#
Xlsx.ColumnCopy(2);      // 3 列目をコピー
Xlsx.ColumnPaste(4);     // 5 列目に貼り付け
//Xlsx.ColumnCopy(2, 4);  // ColumnPaste メソッド省略 (上記と同じ)
```

#### ・コピーした列の挿入 (ColumnInsertCopied)：
```C#
Xlsx.ColumnCopy(2);            // 3 列目をコピー
Xlsx.ColumnInsertCopied(3);    // 4 列目に挿入
//Xlsx.ColumnInsertCopied(2, 3);  // ColumnCopy メソッド省略 (上記と同じ)
```

## セル範囲をマージ
```csharp
string range = "A1:B2"; // マージするセル範囲（例: A1からB2まで）
Xlsx.MergeCells(range);
```

## ヘッダーとフッターの設定
```csharp
string leftHeader = "Left Header";
string centerHeader = "Center Header";
string rightHeader = "Right Header";
Xlsx.Header(leftHeader, centerHeader, rightHeader);

string leftFooter = "Left Footer";
string centerFooter = "Center Footer";
string rightFooter = "Right Footer";
Xlsx.Footer(leftFooter, centerFooter, rightFooter);
```

## フォントの設定
```csharp
string cellAddress = "A1"; // セルのアドレス
Cell cell = Xlsx.Cell(cellAddress);

// フォントサイズを設定
cell.Attr.FontSize = 14;

// フォントカラーを設定
cell.Attr.FontColor = Color.Blue;
```