• NPOI 1.2.4实现服务器无OFFICE组件导出EXCEL


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using NPOI.HSSF.UserModel;
    using NPOI.HPSF;
    using NPOI.POIFS.FileSystem;
    using NPOI.SS.Util;
    using NPOI.SS.UserModel;
    using System.Data;
    namespace WebApplication1
    {
    /// <summary>
    /// Summary description for DownloadExcel
    /// </summary>
    public class DownloadExcel : IHttpHandler
    {

    public void ProcessRequest(HttpContext context)
    {
    context.Response.ContentType = "application/x-excel";
    string sFileType = context.Request.QueryString["FileType"];

    switch (sFileType)
    {
    case "1": //Product Development Time Report
    SaveProductDeveTime(context);
    break;
    case "2": //Project Billable Report

    break;
    case "3": //Project Development Time Report

    break;
    case "4": //Staff Claim Control Report

    break;
    }

    context.Response.Write("Hello World");
    }

    public bool IsReusable
    {
    get
    {
    return false;
    }
    }


    private void SaveProductDeveTime(HttpContext context)
    {

    int rowIndex = 0;
    string filename = HttpUtility.UrlEncode("Product_Development_Time_Report.xls");//文件名进行url编码,防止乱码
    context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
    HSSFWorkbook workbook = new HSSFWorkbook();
    DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
    dsi.Company = "NPOI Team";
    workbook.DocumentSummaryInformation = dsi;
    SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
    si.Subject = "NPOI SDK Example";
    workbook.SummaryInformation = si;
    ISheet sheet = workbook.CreateSheet("Product DevelopmentTime Report");

    //设置报表的主标题信息
    IRow rowTitle = sheet.CreateRow(rowIndex);
    rowTitle.HeightInPoints = 20;

    ICell cellTitle = rowTitle.CreateCell(0);
    //set the title of the sheet
    cellTitle.SetCellValue("Product Development Time Report");
    ICellStyle styleTitle = workbook.CreateCellStyle();
    styleTitle.Alignment = HorizontalAlignment.CENTER;
    //create a font style
    IFont font = workbook.CreateFont();
    font.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    font.FontHeightInPoints = 14;
    styleTitle.SetFont(font);
    cellTitle.CellStyle = styleTitle;
    rowIndex++;


    //merged cells on single row
    //ATTENTION: don't use Region class, which is obsolete
    sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 2));


    //设置报表副标题
    IRow rowSubTitle = sheet.CreateRow(rowIndex);
    rowSubTitle.HeightInPoints = 18;
    ICell cellSubTitle = rowSubTitle.CreateCell(0);
    //set the title of the sheet
    cellSubTitle.SetCellValue("Period:25/02/2012-26/03/2012"); //区间页面传值
    ICellStyle styleSubTitle = workbook.CreateCellStyle();
    styleSubTitle.Alignment = HorizontalAlignment.CENTER;
    //create a font style
    IFont fontSubTitle = workbook.CreateFont();
    fontSubTitle.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    fontSubTitle.FontHeightInPoints = 12;
    styleSubTitle.SetFont(fontSubTitle);
    cellSubTitle.CellStyle = styleSubTitle;
    sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2));
    rowIndex++;

    IRow rowSubTitle2 = sheet.CreateRow(rowIndex);
    rowSubTitle2.HeightInPoints = 18;
    ICell cellSubTitle2 = rowSubTitle2.CreateCell(0);
    //set the title of the sheet
    cellSubTitle2.SetCellValue("Time360"); //区间页面传值
    ICellStyle styleSubTitle2 = workbook.CreateCellStyle();
    styleSubTitle2.Alignment = HorizontalAlignment.CENTER;
    //create a font style
    IFont fontSubTitle1 = workbook.CreateFont();
    fontSubTitle1.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    fontSubTitle1.FontHeightInPoints = 12;
    styleSubTitle2.SetFont(fontSubTitle1);
    cellSubTitle2.CellStyle = styleSubTitle2;
    sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 2));
    rowIndex++;


    ICellStyle StyleCell = workbook.CreateCellStyle();//创建单元格的样式
    IFont FontCell = workbook.CreateFont();//创建字体样式
    FontCell.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    FontCell.FontHeightInPoints = 12;
    FontCell.FontName = "Arial";

    StyleCell.SetFont(FontCell);
    StyleCell.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;//横样式
    StyleCell.VerticalAlignment = VerticalAlignment.CENTER;//垂直样式
    StyleCell.BorderBottom = CellBorderType.THIN;
    StyleCell.BorderTop = CellBorderType.THIN;

    IRow rowHeaderTitle = sheet.CreateRow(rowIndex);
    string[] HeadcolumnsStr = new string[] { "Activeity Code ", "This Peroid(Manhours)", "To-Date(Manhours)" };
    for (int i = 0; i < HeadcolumnsStr.Length; i++)
    {
    ICell celltemp = rowHeaderTitle.CreateCell(i);

    celltemp.SetCellValue(HeadcolumnsStr[i]);

    celltemp.CellStyle = StyleCell;

    }
    rowIndex++;

    #region 数据
    StyleCell = workbook.CreateCellStyle();//创建单元格的样式
    FontCell = workbook.CreateFont();//创建字体样式
    FontCell.Boldweight = (short)FontBoldWeight.NORMAL;//普通
    FontCell.FontHeightInPoints = 12;

    FontCell.FontName = "Arial";

    StyleCell.SetFont(FontCell);
    StyleCell.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT;//横样式
    StyleCell.VerticalAlignment = VerticalAlignment.CENTER;//垂直样式
    StyleCell.BorderBottom = CellBorderType.THIN;
    StyleCell.BorderTop = CellBorderType.THIN;
    DataTable sourceTable_TestRecord = new DataTable();


    for (int i = 0; i < sourceTable_TestRecord.Rows.Count; i++)
    {
    IRow rowData = sheet.CreateRow(rowIndex);
    for (int j = 0; j < HeadcolumnsStr.Length; j++)
    {
    ICell cellValue = rowData.CreateCell(j);


    cellValue.SetCellValue(sourceTable_TestRecord.Rows[i][j].ToString());
    cellValue.CellStyle = StyleCell;
    }
    rowIndex++;
    }

    #endregion

    #region 统计

    StyleCell = workbook.CreateCellStyle();//创建单元格的样式
    FontCell = workbook.CreateFont();//创建字体样式
    FontCell.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    FontCell.Color = NPOI.HSSF.Util.HSSFColor.RED.index;
    FontCell.FontHeightInPoints = 12;
    FontCell.FontName = "Arial";

    StyleCell.SetFont(FontCell);
    StyleCell.Alignment = NPOI.SS.UserModel.HorizontalAlignment.RIGHT;//横样式
    StyleCell.VerticalAlignment = VerticalAlignment.CENTER;//垂直样式

    IRow rowTotal = sheet.CreateRow(rowIndex);
    ICell cellTotalName0 = rowTotal.CreateCell(0);
    cellTotalName0.SetCellValue("Total Hours");
    cellTotalName0.CellStyle = StyleCell;


    StyleCell = workbook.CreateCellStyle();//创建单元格的样式
    FontCell = workbook.CreateFont();//创建字体样式
    FontCell.Boldweight = (short)FontBoldWeight.BOLD;//加粗
    FontCell.Color = NPOI.HSSF.Util.HSSFColor.RED.COLOR_NORMAL;
    FontCell.FontHeightInPoints = 12;
    FontCell.FontName = "Arial";

    StyleCell.SetFont(FontCell);
    StyleCell.Alignment = NPOI.SS.UserModel.HorizontalAlignment.RIGHT;//横样式
    StyleCell.VerticalAlignment = VerticalAlignment.CENTER;//垂直样式

    ICell cellTotalName1 = rowTotal.CreateCell(1);
    cellTotalName1.SetCellValue("200");
    cellTotalName1.CellStyle = StyleCell;

    #endregion


    #region 设置列宽
    sheet.SetColumnWidth(0, 12000);
    sheet.SetColumnWidth(1, 12000);
    sheet.SetColumnWidth(2, 12000);
    #endregion



    //////merged cells on mutiple rows
    //CellRangeAddress region = new CellRangeAddress(3, 4, 3, 4);

    //sheet.AddMergedRegion(region);


    ////set enclosed border for the merged region
    //((HSSFSheet)sheet).SetEnclosedBorderOfRegion(region, CellBorderType.DOTTED, NPOI.HSSF.Util.HSSFColor.RED.index);


    workbook.Write(context.Response.OutputStream);

    }

    }
    }
  • 相关阅读:
    图片压缩后,依然很大的解决方案
    怎么使用javascript实现类的功能
    javascript实现像java、c#之类的sleep暂停的函数功能
    用ajax和asp.net实现智能搜索功能
    insert into 和insert into select性能比较
    百度编辑器
    document.selection.createRange()
    CSS设置透明效果
    class中一个小技巧
    asp.net中 解析JSON
  • 原文地址:https://www.cnblogs.com/Loofah/p/NPOI.html
Copyright © 2020-2023  润新知