C# Excelファイルを取り込んだ時の未入力セルと空白セル
概要
Excelファイルを読み込んだ時に、空欄のセルがNullになる場合と空文字になる場合がありまして、これが原因のバグを埋め込んでしまいました。ちなみに過去にも同じようなことがあったので忘れないためにメモを残しておきます。
未入力セルと空白セル
「A2」「B2」は両方とも空欄のセルです。
一見同じに見えますが、ISBLANK関数を使ってみます。
=ISBLANK(テストの対象)
結果はヘッダーに記載の通り「A2」はTRUEに、「B2」はFALSEになります。未入力セルは値がない状態ですが、空白セルは「""」の値があります。
未入力セルはExcelファイルを新規作成したときのセルの状態ですね。
空白セルは、IF関数を使ったり、プログラムよりセルの値を空文字としてExcel出力した時に作られます。
=IF(true,"")
デバッグにて確認
それではこのExcelファイルをC#のプログラムにて取り込んで中身を見てみます。
取り込むためのライブラリはEPPlusを使いました。パッケージマネージャコンソールよりインストールします。
PM> Install-Package EPPlus
デバッグ用コード
using OfficeOpenXml; using System; using System.IO; using System.Linq; namespace ExcelLoad { class Program { static void Main(string[] args) { using (var pck = new ExcelPackage()) { try { using (var stream = File.OpenRead(@"c:\file\ExcelFile.xlsx")) { pck.Load(stream); } } catch (IOException ioEx) { Console.WriteLine(ioEx.Message); } var ws = pck.Workbook.Worksheets.First(); foreach (var cell in ws.Cells[1, 1, ws.Cells.End.Row, ws.Cells.End.Column]) { Console.WriteLine(cell.Value); } } Console.ReadKey(true); } } }
未入力セル
Textは空文字「""」ですが、Valueは「null」です。
空白セル
こちらは両方、空文字「""」です。