NPOI 1.2.4教程–2.2.1セルの書式設定

4237 ワード

転載サイト:
http://tonyqus.sinaapp.com/archives/108
=================================================================================================================================================================================
Excelでは、日付書式(yyyymmdd)、小数点書式(1.20)、通貨書式($2000)、パーセンテージフォーマット(99.99%)などの書式を常に設定していますが、これらのものは過去にサーバー側でしか生成できないかもしれません。サーバー側のコード量を増やすだけでなく、不要な文字列の代替操作をもたらしました。現在NPOIは、このような全く必要のない操作からサーバを解放し、すべてはExcelによってクライアントで処理されます。
NPOIを使用する場合は、すべてのフォーマットはCelSteyle.Data Formatでセルに割り当てられています。直接セルに割り当てられていません。
 
ケースの日付書式
もし私たちが今表示したい日付のフォーマットが2008年5月5日であれば、下記のコードで作成できます。
1
2
3
4
5
6
7
8ISheet sheet = hssfworkbook.CreateSheet("new sheet");ICell cell = sheet.CreateRow(0).CreateCell(0);cell.SetCellValue(newDateTime(2008,5,5));//set date formatICellStyle cellStyle = hssfworkbook.CreateCellStyle();IDataFormat format = hssfworkbook.CreateDataFormat();cellStyle.DataFormat = format.GetFormat("yyyy m d ");cell.CellStyle=cellStyle;ここの「yyyy年m月d日」はカスタムフォーマットに属するので、hssfwork book.reate Data Format()でHSSFData Formatのインスタンスを作成し、format.GetFormatを使って該当フォーマットを取得しなければなりません。Excelがサポートするフォーマット表示方式であれば、この方式は全部実現できます。
ケース2は2桁の小数を保留します。
もし私たちが1.2のセルを持っているとしたら、どうやって1.20と表示されますか?Excelでは「0.00」と表示されますので、下記のコードが完成します。
1
2
3
4
5
6
7
8// Create a row and put some cells in it. Rows are 0 based.ICell cell = sheet.CreateRow(0).CreateCell(0);//set value for the cellcell.SetCellValue(1.2);//number format with 2 digits after the decimal point - "1.20"ICellStyle cellStyle = hssfworkbook.CreateCellStyle();cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");cell.CellStyle = cellStyle;これを使うのは、0.00がExcelに埋め込まれたフォーマットなので、完全なExcelに埋め込まれたフォーマットのリストです。みんなはこのウィンドウのカスタムリストを見ることができます。
ここでは一つ一つ書きません。
ケース3通貨書式
通貨書式は金融の項目でよく使われています。例えば人民元記号¥や米ドル記号など、ここでは下記のコードで表しています。
1
2
3
4
5
6ICell cell2 = sheet.CreateRow(1).CreateCell(0);cell2.SetCellValue(20000);ICellStyle cellStyle2 = hssfworkbook.CreateCellStyle();IDataFormat format = hssfworkbook.CreateDataFormat();cellStyle2.DataFormat = format.GetFormat("¥#,##0");cell2.CellStyle = cellStyle2;注意してください。ここには千分位のセパレータが入っています。だから、xi、氡氡、なぜこのように書くのかというと、マイクロソフトに聞いてみます。
実例400点比
パーセンテージはレポートでもよく使われていますが、基本的には上と同じです。ただ書式表示は0.00%です。コードは下記の通りです。
1cellStyle4.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");ここは埋め込み形式ですので、直接HSSFData Format.Get Buiting Formatを使えばいいです。
ケース5中国語大文字
金額を表示する時、私達はよく使います。多くの兄弟が数字を中国語の大きさに変えて書くツール類を実現したことを見ました。後でExcelにこのすべてを処理させてもいいです。コードは先ほどと同じです。フォーマットを変えた表示です。
1
2IDataFormat format = hssfworkbook.CreateDataFormat();cellStyle6.DataFormat = format.GetFormat("[DbNum2][$-804]0");カスタムフォーマットなので、HSSFData Format.GetFormatを使って、この二つのフォーマットの違いについてもっと熟知していると信じています。
ケース六科学計数法
これは数学の授業で習ったことがあります。あまり使わないですが、Excelがサポートしている以上、ここでも紹介します。
1cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");以上の例の表示効果を示します。
最後にHSSFData Format.Get FormatとHSSFData Format.Get Buiting Formatの違いをまとめます。
Excelで埋め込まれたフォーマット(または事前定義)を使う場合は、HSSFData Format.Get Buiting Format静的な方法をそのまま使えばいいです。
自分で定義したフォーマットを使うときは、HSSFWork book.reateDataFormat()を呼び出さなければなりません。この場合は、下の階で先にマッチングした埋め込みFormat Recordがあるかどうかを探します。ないとFormatRecordが新たに作成されますので、この方法を呼び出さなければなりません。その後、取得したHSSFDataFormat Format FormatのインスタンスのGetFormatメソッドを使うことができます。もちろん、このような方法は相対的に面倒なので、インラインフォーマットはHSSFData Format.Get BuitionFormat静的な方法を使ったほうが直接的です。ただし、カスタムフォーマットも天馬行空ではなく、勝手に定義しますか?それともExcelの書式表示を参照して定義しますか?具体的には関連のExcel教程を見てください。
注意:カスタムFormatRecordはxlsファイルの内部に埋め込まれているので、相手のExcelにこのフォーマットが定義されているかどうかは心配しないでください。全部正常に使えます。