使用开源NPOI导出简单excel文件

 

//NPOI 函式庫
using NPOI;
using NPOI.DDF;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.POIFS;
using NPOI.SS;
using NPOI.Util;
using NPOI.HSSF.UserModel;//HSSFWorkbook类
using NPOI.SS.UserModel;
using NPOI.SS.Util;
//NPOI 函式庫;
using System.IO;

这里涉及合并单元格的功能,实现如下:

string filename = "抄表情况.xls";
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename));
context.Response.Clear();
//InitializeWorkbook
InitializeWorkbook();
//GenerateData
ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
//sheet1.CreateRow(0).CreateCell(0).SetCellValue("抄表情况");
//写入总标题,合并居中
IRow row = sheet1.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("抄表情况");
ICellStyle style = hssfworkbook.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER;
IFont font = hssfworkbook.CreateFont();
font.FontHeight = 20 * 20;
style.SetFont(font);
cell.CellStyle = style;
sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 20));

int r_count = dt.Rows.Count;
int c_count = dt.Columns.Count;
//插入列标题
row = sheet1.CreateRow(1);
for (int x = 0; x < c_count; x++)
{
    cell = row.CreateCell(x);
    cell.SetCellValue(dt.Columns[x].ColumnName);
}
//插入查询结果
for (int i = 0; i < r_count; i++)
{
    //IRow row = sheet1.CreateRow(i);
    row = sheet1.CreateRow(i+2);//从第二行开始
    for (int j = 0; j < c_count; j++)
    {
        row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
    }
}
//Write the stream data of workbook to the root directory
MemoryStream file = new MemoryStream();
hssfworkbook.Write(file);

context.Response.BinaryWrite(file.GetBuffer());
context.Response.End();

附:

以下包括调用方法InitializeWorkbook和定义全局HSSFWorkbook对象hssfworkbook

HSSFWorkbook hssfworkbook;
void InitializeWorkbook()
{
    hssfworkbook = new HSSFWorkbook();
    ////create a entry of DocumentSummaryInformation
    DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
    dsi.Company = "NPOI Team";
    hssfworkbook.DocumentSummaryInformation = dsi;

    ////create a entry of SummaryInformation
    SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
    si.Subject = "NPOI SDK Example";
    hssfworkbook.SummaryInformation = si;
}

 

posted @ 2012-11-07 17:32  xiepeixing  阅读(6020)  评论(0编辑  收藏  举报