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
8
ケース2は2桁の小数を保留します。
もし私たちが1.2のセルを持っているとしたら、どうやって1.20と表示されますか?Excelでは「0.00」と表示されますので、下記のコードが完成します。
1
2
3
4
5
6
7
8
ここでは一つ一つ書きません。
ケース3通貨書式
通貨書式は金融の項目でよく使われています。例えば人民元記号¥や米ドル記号など、ここでは下記のコードで表しています。
1
2
3
4
5
6
実例400点比
パーセンテージはレポートでもよく使われていますが、基本的には上と同じです。ただ書式表示は0.00%です。コードは下記の通りです。
1
ケース5中国語大文字
金額を表示する時、私達はよく使います。多くの兄弟が数字を中国語の大きさに変えて書くツール類を実現したことを見ました。後でExcelにこのすべてを処理させてもいいです。コードは先ほどと同じです。フォーマットを変えた表示です。
1
2
ケース六科学計数法
これは数学の授業で習ったことがあります。あまり使わないですが、Excelがサポートしている以上、ここでも紹介します。
1
最後に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にこのフォーマットが定義されているかどうかは心配しないでください。全部正常に使えます。
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
8
ISheet sheet = hssfworkbook.CreateSheet(
"new sheet"
);
ICell cell = sheet.CreateRow(0).CreateCell(0);
cell.SetCellValue(
new
DateTime(2008,5,5));
//set date format
ICellStyle 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 cell
cell.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
6
ICell 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%です。コードは下記の通りです。
1
cellStyle4.DataFormat = HSSFDataFormat.GetBuiltinFormat(
"0.00%"
);
ここは埋め込み形式ですので、直接HSSFData Format.Get Buiting Formatを使えばいいです。ケース5中国語大文字
金額を表示する時、私達はよく使います。多くの兄弟が数字を中国語の大きさに変えて書くツール類を実現したことを見ました。後でExcelにこのすべてを処理させてもいいです。コードは先ほどと同じです。フォーマットを変えた表示です。
1
2
IDataFormat format = hssfworkbook.CreateDataFormat();
cellStyle6.DataFormat = format.GetFormat(
"[DbNum2][$-804]0"
);
カスタムフォーマットなので、HSSFData Format.GetFormatを使って、この二つのフォーマットの違いについてもっと熟知していると信じています。ケース六科学計数法
これは数学の授業で習ったことがあります。あまり使わないですが、Excelがサポートしている以上、ここでも紹介します。
1
cellStyle3.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にこのフォーマットが定義されているかどうかは心配しないでください。全部正常に使えます。