2012年7月17日火曜日

NPOI 日付が割り算として計算されてしまう

NPOIでせっかく日付書式を指定してデータを出力しているのに、"2012/x/x"と入力するとなぜか1900/x/xといった日付になることがある(見かけ上正しく出ているが、一旦セルを編集するとおかしくなる)。

これは、スラッシュが日付書式でなく割り算として解釈され、計算された値が日付として表示されるためこのような奇妙な事態となる。

この元凶はExcelのツール>オプション>移行>式入力を変更するというチェックである。

普通にExcelを新規シートを作成した際はこのチェックボックスは付かないが、NPOIから作成する場合なぜかデフォルトTrueなので、Falseにしてやる必要がある。


        hssf.CreateSheet("Sheet1")
        Dim sheetObj As HSSFSheet = hssf.GetSheet("Sheet1")
        sheetObj.AlternativeFormula = False
        sheetObj.AlternativeExpression = False


AlternativeFormulaが「式入力を変更する」のオプションに該当。ついでに「計算方式を変更する」のオプションであるAlternativeExpressionもFalseにしておいたほうが良いだろう(こちらも普通に新規シートを作成する際はチェックが付いてない)

0 件のコメント:

コメントを投稿