今回のテーマ
今回はC#でExcelをいじることが出来るClosedXML.Excelについての記事です。
前回の記事はこちらです。
こちらもCHECK
-
【C# sharp】ClosedXML.Excelの新規作成、開き方、保存、セルの読み取りをまとめました。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
前回の記事では、ファイル作成、開き方、読み取り方法などの記事でしたので、今回はファイルへの書き込みについて書いていきます。
それでは、早速みていきましょう!!
ファイルの書き込み方法1 Cellメソッドを使用する。
まずは読み取りの時にも紹介したCellメソッドで書き込んでみます。
前回の記事のExcelファイルの文字列を全て削除し、そのまま使用します。
下記のソースコードを実行してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); book.Worksheet(1).Cell("A1").Value = "フシギダネ"; book.SaveAs(path); } } |
出力結果
A1のセルにフシギダネと入力されましたね。
読み取りのときはValueの値を参照する形だったのに対し、書き込み時はValueに値を代入するだけで書き込みできます。
Cellメソッドは読み取りのときと同様、1つのセルを対象としています。
ファイルの書き込み方法2 Cellsメソッドを使用する。
読み取り時にはとても優秀なCellsメソッドを使ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); book.Worksheet(1).Cells("A1:C2").Value = "フシギダネ"; book.SaveAs(path); } } |
出力結果
A1からC2までのセルに「フシギダネ」が入力されましたね。
ソースコード自体は簡単ですが、同じ値を複数セルに入力したい場面は少ないですよね。
Cellsメソッドは読み取りでは優秀ですが、書き込みで使うことはあまりありません。
そこで、次に紹介するメソッドが書き込むのに凄く優秀なので、是非覚えてください。
ファイルの書き込み方法3 InsertDataメソッドを使用する。
正直にいうと、Excelファイルへの書き込み方法でこのメソッドだけぜひ覚えてほしいです。
今までの書き込み方法は他のブログなどでも紹介されていますが、
私は全力でInsertDataメソッドを押しますし、是非皆さんにも使いこなしてほしいと思っています。
早速、例をみてみましょう。配列の文字列を入力する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using ClosedXML.Excel; using System; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); var array = new String[] { "フシギダネ", "フシギソウ", "フシギバナ" }; book.Worksheet(1).FirstCell().InsertData(array); book.SaveAs(path); } } |
出力結果
配列の要素が各セルに入力することができましたね。
InsertDataメソッドの引数はIEnumerableを指定でき、各要素に応じてセルを分けてくれます。
セルを自動的に分けてくれるのがとても優秀で、下記のように任意のクラスを定義したリストを引数にした場合も自動的に入力できます。
今回の例では、ポケモンのクラスを作成しました。(ポケモンリスト:No、名前、タイプ1、タイプ2を持っています。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using ClosedXML.Excel; using System; using System.Collections.Generic; class Program { static void Main(string[] args) { const string path = @"D:\exceltest\excel.xlsx"; //パスは変えてください。 XLWorkbook book = new XLWorkbook(path); var pokelist = new List<Pokemon>(); pokelist.Add(new Pokemon("1", "フシギダネ", "くさ", "どく")); pokelist.Add(new Pokemon("2", "フシギソウ", "くさ", "どく")); pokelist.Add(new Pokemon("3", "フシギバナ", "くさ", "どく")); pokelist.Add(new Pokemon("4", "ヒトカゲ", "ほのお", "")); pokelist.Add(new Pokemon("5", "リザード", "ほのお", "")); pokelist.Add(new Pokemon("6", "リザードン", "ほのお", "ひこう")); pokelist.Add(new Pokemon("7", "ゼニガメ", "みず", "")); pokelist.Add(new Pokemon("8", "カメール", "みず", "")); pokelist.Add(new Pokemon("9", "カメックス", "みず", "")); book.Worksheet(1).FirstCell().InsertData(pokelist); book.SaveAs(path); } } class Pokemon { public string no; public string name; public string type1; public string type2; public Pokemon(string no,string name,string type1,string type2) { this.no = no; this.name = name; this.type1 = type1; this.type2 = type2; } } |
出力結果
各ポケモン達の属性を別セルで出力できました!!InsertDataメソッドの優秀さが伝わったと思います。
まとめ
今回はExcelへの書き込み方法の記事でした。
Excelを出力するプログラムを作成するときにはリストや配列のデータを揃えてから、InsertDataメソッドを使用して、一括で入力するようにした方がいいと思います。
今度は読み取りのCellsメソッド、書き込みのInsertDataメソッドを紹介することができたので、
Linqを使用した読み取り書き込み例の記事を書いていきたいと思います。
それでは、最後まで見て頂き、ありがとうございました!
次回の記事はこちらです。検索について理解できます!!
-
参考【C# sharp】ClosedXML.Excelの使い方 セルを検索方法はSearchメソッドを使おう
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
ファイルについての記事はこちら