EPPlusを使用してExcelシートを読み取り、データをデータテーブルにロードしてさらに操作を実行し、変更されたデータをExcelファイルに保存しています。
以下のコードは、セル値が float 値であるかどうかをチェックし、次に float 値を datetime に変換します。
セル値が日付の場合、コードは正常に機能します (例: Invoice Date = 42009 ) が、例: amount = 10 のような日付ではない値を日付に変換します。
EPPlus ライブラリに、セルの形式 (一般/日付/数値など) を特定できる方法はありますか?
float floatValue;
if (float.TryParse(Convert.ToString(oSheet.Cells[i, j].Value), out floatValue)
&& Convert.ToString(oSheet.Cells[i, j].Style.Numberformat.Format).Contains("[$-409]d\\-mmm\\-yy;@"))
{
dr[j - 1] = String.Format("{0:d-MMM-yy}", DateTime.FromOADate(floatValue));
}
else
{
DateTime date;
if (DateTime.TryParse(Convert.ToString(oSheet.Cells[i, j].Value), out date))
{
dr[j - 1] = String.Format("{0:d-MMM-yy}", date);
}
else
{
dr[j - 1] = Convert.ToString(oSheet.Cells[i, j].Value).Trim();
}
}