背景私は、二に変換したい日時と小数点以下の桁数を持つ(xlxs)エクセルファイルが備わっていNPOI - 日時形式の数値エクセル細胞(C#の)
を区別する方法次元の文字列配列。配列の文字列は、ユーザーがExcelに入力したとおりに表示されます。これを行うには、NPOIバージョン2.2.1をC#で使用しています。
例の列Aは、Excelで日付として書式設定されています。
COLUMN A COLUMN B
2016-07-20 -46,95
2016-07-20 283,59
2016-07-20 -46,95
2016-07-20 52194,64
私は(ジェネリックメソッドのConvertCellToStringを持っている)、それにセルを変換する適切な文字列表現です:さえ日時細胞は数値セル、すべてでこのソリューションの結果であるため、しかし
private string GetCellAsString(ICell cell)
{
switch (cell.CellType)
{
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
case CellType.Error:
return cell.ErrorCellValue.ToString();
case CellType.Formula:
return cell.CellFormula.ToString();
//ALL CELLS IN THE EXEMPEL ARE NUMERIC AND GOES HERE
case CellType.Numeric:
return cell.NumericCellValue.ToString();
case CellType.String:
return cell.StringCellValue.ToString();
case CellType.Blank:
case CellType.Unknown:
default:
return "";
}
}
(2016-07-20などの代わりに「21672」)
以下の方法では、数字のあるセルと日付のあるものを区別する必要があります。とにかくこれをNPOIでやっているのですか?私はむしろ、特にNPIOのcell.ToString()が恐ろしい "2016-jan-20"形式を返すので、文字列の解析に頼らざるを得ません。
私はかなりここにこだわっているので、助けに感謝します!私はちょうど見つけることができないこれのためのいくつかの明白なベストプラクティスがなければならない!
は、私はエクセルのフォーマット方法を制御することはできませんことに留意すべきです。彼らはさまざまな顧客から私たちに送られてきました。その中のいくつかはさまざまな書式を使用していました。そして、上記の方法は私たちがすべての優れたものをひも付けするために使う汎用ライブラリからです。 – user1531921
[DateUtils](https://npoi.codeplex.com/SourceControl/latest#NPOI/SS/UserModel/DateUtil.cs)には、セルが日付フォーマットの場合にtrueを返す 'public static bool IsCellDateFormatted(Cell cell)'があります。 。私はNPOIを使ったことは一度もありませんが、これはapache poiを使ってこの作業を行うアプローチでもあります。 –
ありがとう、私はそれをチェックアウトします! – user1531921