asp.netでnpoiを使ってエクセルのテンプレートを読み取り、ダウンロードの詳細をエクスポートします。

2899 ワード

なぜNPOIを使ってExcelをエクスポートしますか?
一、伝統操作エクセルで発生した問題を解決する:
NETの場合は、サーバー端にOfficeをインストールし、脆弱性を防ぐためにタイムリーに更新する必要があります。また、権限を設定して許可する必要があります。Excelは数字だけの列をタイプ変換します。元々はテキスト型ですが、Excelはそれを数値型に変えます。たとえば番号000123は123になります。エクスポート時にフィールドの内容が「-」または「=」で始まると、Excelは数式として扱われ、エラーが発生します。Excelは、Excelファイルの前の8行によってデータの種類を分析します。ちょうどあなたの前の8行のある列が数字だけだったら、この列は数値型だと思います。この列は自動的に1.42702 E+17フォーマットに似ています。日付列は日付と数字を含むものになります。二、個人的にはNPOIを使うメリットがあると思います。
導き出す速度はとても速くて、伝統的な方法と同じ桁ではありません。プロセスの問題を心配しなくてもいいです。伝統的なエクスポート方法はExcelプロセスをエクスポートするごとにExcelプロセスを開けます。自動的に閉じられません。手で閉じたら、すべてのExcelプロセスを巡回して殺しなければなりません。これは同時にエクスポートできない問題を引き起こします。使用手順
第一歩:ソリューションに参照を追加します。
ここで使用するのはNPOI 1.2.5の.net 2.0バージョンで、2つのファイルを参照する必要があります。
NPOI 1.2.5のダウンロードアドレスは以下の通りです。http://npoi.codeplex.com/releases/view/38113
第二ステップ:CSファイルに参照を追加します。

using NPOI.HSSF.UserModel;
using System.IO;//
using NPOI.SS.UserModel
第三ステップ:コードの具体的な使用

#region

//
HSSFWorkbookhssfworkbook;
//
using(FileStreamfile=newFileStream(HttpContext.Current.Request.PhysicalApplicationPath+@"template/book1.xls",FileMode.Open,FileAccess.Read))
{
//
hssfworkbook=newHSSFWorkbook(file);
}
#endregion

#region

// Sheet1
ISheetsheet1=hssfworkbook.GetSheet("Sheet1");
// , ,
sheet1.GetRow(1).GetCell(1).SetCellValue(200200);
sheet1.GetRow(2).GetCell(1).SetCellValue(300);
sheet1.GetRow(3).GetCell(1).SetCellValue(500050);
sheet1.GetRow(4).GetCell(1).SetCellValue(8000);
sheet1.GetRow(5).GetCell(1).SetCellValue(110);
sheet1.GetRow(6).GetCell(1).SetCellValue(100);
sheet1.GetRow(7).GetCell(1).SetCellValue(200);
sheet1.GetRow(8).GetCell(1).SetCellValue(210);
sheet1.GetRow(9).GetCell(1).SetCellValue(2300);
sheet1.GetRow(10).GetCell(1).SetCellValue(240);
sheet1.GetRow(11).GetCell(1).SetCellValue(180123);
sheet1.GetRow(12).GetCell(1).SetCellValue(150);

// Excel
sheet1.ForceFormulaRecalculation=true;
#endregion
#region ( )
// Excel
Response.ContentType="application/vnd.ms-excel";
// Excel
Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}","test.xls"));
//Clear HTML 。 Response , Response 。 。
Response.Clear();
#endregion
#region
using(MemoryStreamms=newMemoryStream())
{
//
hssfworkbook.Write(ms);
//
Response.BinaryWrite(ms.GetBuffer());
Response.End();
}
#endregion

3、まとめ
テンプレートファイルをブックオブジェクトに読み込みます。テンプレートからシートの内容を設定します。応答ヘッダ(ファイル名とファイル形式)を設定します。クライアントに書き込みます。