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 件のコメント:
コメントを投稿