0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ClosedXmlでセルの名前指定

Posted at

はじめに

ClosedXmlを使ってExcel出力を行っています。

出力ファイルのレイアウト変更を容易に行えるよう、テンプレートシートのセルに名前を付けてプログラムで指定しようと思います。

作ってみる

こんな感じのテンプレートを用意します。
image.png

このテンプレートシートをコピーして、コピーしたシートに値を代入します。

ClosedXml
IXLWorksheet templateSheet = workbook.Worksheet("テンプレート");
IXLWorksheet worksheet = templateSheet.CopyTo("出力シート001");

worksheet.Cell("学籍番号").Value = "XXXX-YY-ZZZ";
worksheet.Cell("氏名").Value = "佐藤 太郎";

すると、以下のようになります。
image.png
image.png

こうなって欲しかったのに思ってたのと違う…
image.png

:thinking:なぜだろう

ClosedXmlでコピーしたシートの名前定義を見てみると、シート範囲の定義のみがコピーされました。Excelでコピーした場合と仕様が異なるようです。
image.png
その為、テンプレートの「学籍番号」と出力シート001の「氏名」に値が入っていました。
つまり、ClosedXmlでテンプレートを使う場合はシート範囲で名前を定義する必要があります。

すると、思った通りにできました。
image.png

参考

Excelでコピーしたシートの名前の定義について

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?