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にしておいたほうが良いだろう(こちらも普通に新規シートを作成する際はチェックが付いてない)

2012年7月12日木曜日

SqlServer SELECT文からテーブルを作る ( テーブル作成クエリ )

SELECT文からテーブルを作成する機能が(Accessのテーブル作成クエリに該当)、なんとSqlServerにもある。
データをどこかしらから持ってきて、とりあえずテーブルに入れたい場合などに重宝すると思います。

SELECT 'JOBS'  AS NAME , 0.000 AS SARALY INTO EMP_TABLE


データをまじめに設定しておくとテーブル型も結構正確になります(上記の場合、数値は小数点以下桁数3桁がきっちり設定される)。