「ClosedXML - Excelファイルの操作」の版間の差分

ナビゲーションに移動 検索に移動
112行目: 112行目:


== Excelファイルの作成 ==
== Excelファイルの作成 ==
以下の例では、Excelファイルおよびシートを新規作成して、A1セル〜A3セルに値および式を入力している。<br>
以下の例では、Excelファイルおよびシートを新規作成している。<br>
また、A3セルの背景色を塗りつぶして、書式を変更している。<br>
<br>
* Open XML形式のExcelファイルの作成と編集
*: new XLWorkbook()を使用して新しいワークブックを作成する。
*: workbook.Worksheets.Add("サンプルシート")でワークシートを追加する。
*: workbook.SaveAs("sample.xlsx")でファイルを保存する。
*: 既存のファイルを開く場合は、new XLWorkbook("サンプル.xlsx")を使用する。
<br>
<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
using System;
using ClosedXML.Excel;
  const string ExcelFilePath = @"sample.xlsx";
  const string ExcelFilePath = @"sample.xlsx";
   
   
122行目: 130行目:
  {
  {
     // ワークシートの追加
     // ワークシートの追加
     using (var worksheet = workbook.Worksheets.Add("サンプルシート1"))
     using (var worksheet = workbook.Worksheets.Add("サンプルシート"))
     {
     {
       // セルに値や式を代入
       // 何らかの処理
      worksheet.Cell("A1").Value = 10;
      worksheet.Cell("A2").SetValue(20);
      worksheet.Cell("A3").FormulaA1 = "SUM(A1:A2)";
      // セルに書式を設定
      var sumCellStyle = worksheet.Cell("A3").Style;
      sumCellStyle.Fill.BackgroundColor = XLColor.Red; // 塗りつぶし
      sumCellStyle.NumberFormat.Format = "#,##0.00"; // 数値の書式
      // 以下に示すように、メソッドチェーンでも記述することができる
      //worksheet.Cell("A3").SetFormulaA1("SUM(A1:A2)")
      //                    .Style.Fill.SetBackgroundColor(XLColor.Red)
      //                    .NumberFormat.SetFormat("#,##0.00");
   
   
       // ワークブックを保存する
       // ワークブックを保存する
144行目: 139行目:
   
   
     Console.WriteLine(@"Excelファイルを保存しました");
     Console.WriteLine(@"Excelファイルを保存しました");
    // 保存したファイルを開いて編集
    using (var workbook = new XLWorkbook("サンプル.xlsx"))
    {
      var worksheet = workbook.Worksheet(1);
      // 何らかの処理
 
      // 変更を保存
      workbook.Save();
    }
}
</syntaxhighlight>
<br><br>
== セルデータの読み書き ==
以下の例では、Open XML形式のExcelファイルにおいて、セルの値の設定、読み取り、数式の挿入、ファイルの保存と再編集等を行っている。<br>
<br>
* セルデータの読み書き
** 書き込み
**: worksheet.Cell("A1").Value = "文字列" のように、Cellメソッドを使用してセルを指定して、Valueプロパティに値を代入する。
** 読み取り
**: var cellValue = worksheet.Cell("A2").Value のように、Valueプロパティを使用してセルの値を取得する。
<br>
* 数値、文字列、日付等の各種データ型
** 文字列
**: worksheet.Cell("A1").Value = "文字列"
** 数値
**: worksheet.Cell("A2").Value = 123
** 日付
**: worksheet.Cell("A3").Value = DateTime.Now
<br>
* 複雑な数式の挿入と評価
** 基本的な数式
**: worksheet.Cell("B1").FormulaA1 = "=SUM(A1:A3)"
** 条件付き数式
**: worksheet.Cell("C1").FormulaA1 = "=IF(A2>100, \"高い\", \"低い\")"
<br>
また、大量のデータを扱う場合は、パフォーマンスを考慮したアプローチ (例: バッチ処理) を検討する必要がある。<br>
<br>
<syntaxhighlight lang="c#">
using System;
using ClosedXML.Excel;
class Program
{
    static void Main(string[] args)
    {
      // 新しいExcelワークブックを作成
      using (var workbook = new XLWorkbook())
      {
          var worksheet = workbook.Worksheets.Add("サンプルシート");
          // セルデータの書き込み
          worksheet.Cell("A1").Value = "文字列";
          worksheet.Cell("A2").Value = 123;          // 数値
          worksheet.Cell("A3").Value = DateTime.Now;  // 日付
          // 数式の挿入
          worksheet.Cell("B1").FormulaA1 = "=SUM(A1:A3)";
          // セルのスタイル設定
          var cell = worksheet.Cell("A1");
          cell.Style.Font.Bold = true;
          cell.Style.Fill.BackgroundColor = XLColor.LightBlue;
          // セルの値を読み取り
          var cellValue = worksheet.Cell("A2").Value;
          Console.WriteLine($"A2セルの値: {cellValue}");
          // 複雑な数式の挿入
          worksheet.Cell("C1").FormulaA1 = "=IF(A2>100, \"高い\", \"低い\")";
          // セルに書式を設定
          var sumCellStyle = worksheet.Cell("A3").Style;
          sumCellStyle.Fill.BackgroundColor = XLColor.Red;  // 塗りつぶし
          sumCellStyle.NumberFormat.Format = "#,##0.00";    // 数値の書式
          // 以下に示すように、メソッドチェーンでも記述することができる
          //worksheet.Cell("A3").SetFormulaA1("SUM(A1:A2)")
          //                    .Style.Fill.SetBackgroundColor(XLColor.Red)
          //                    .NumberFormat.SetFormat("#,##0.00");
          // ファイルを保存
          workbook.SaveAs("サンプル.xlsx");
      }
      // 保存したファイルを開いて編集
      using (var workbook = new XLWorkbook("サンプル.xlsx"))
      {
          var worksheet = workbook.Worksheet(1);
          // 既存のデータを読み取り
          var a1Value = worksheet.Cell("A1").Value;
          Console.WriteLine($"A1セルの値: {a1Value}");
          // 新しいデータを追加
          worksheet.Cell("D1").Value = "新しいデータ";
          // 変更を保存
          workbook.Save();
      }
      Console.WriteLine("処理が完了しました。");
    }
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>

案内メニュー