zoukankan      html  css  js  c++  java
  • 记录NPOI使用方法

    DLL 下载地址:https://files.cnblogs.com/files/xujunbao/NPOI.rar

    using NPOI.HSSF.UserModel;
    using NPOI.SS.Util;
    using NPOI.SS.UserModel;
    using NPOI.XSSF.UserModel;
    protected void btn_export_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt = null;   //这里为导出的数据源
        string path = Server.MapPath("~/FileUpload/Excel/导出" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls");
        TableToExcel2(dt, path);
    
        //进行后台文件下载
        FileInfo fileInfo = new FileInfo(path);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=报价表" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls");
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }
    public static void TableToExcel2(DataTable dt, string file)
    {
        IWorkbook workbook;
        string fileExt = Path.GetExtension(file).ToLower();
        if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }
        if (workbook == null) { return; }
        ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);
        int Excel_row = 0;
        int Excel_col = 0;
        BLL.jk_activatedTestingItem_base bll = new BLL.jk_activatedTestingItem_base();
        DataTable dt_item = new DataTable();
        ICellStyle style = workbook.CreateCellStyle();
        //设置单元格的样式:水平对齐居中
        style.Alignment = HorizontalAlignment.Center;
        //垂直居中
        style.VerticalAlignment = VerticalAlignment.Center;
        //新建一个字体样式对象
        IFont font = workbook.CreateFont();
        //设置字体加粗样式
        font.Boldweight = short.MaxValue;
        //使用SetFont方法将字体样式添加到单元格样式中 
        style.SetFont(font);
        //数据  
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            long activateId = TypeConverter.ObjectToLong(dt.Rows[i]["activateId"]);
            dt_item = bll.GetList("activateId=" + activateId + " and testingItemLevel=1").Tables[0];
            if (dt_item == null || dt_item.Rows.Count == 0)
            {
                continue;
            }
            IRow row1 = sheet.CreateRow(Excel_row);
            //表头  
            if (i == 0)
            {
                row1 = sheet.CreateRow(Excel_row);
                ICell cell = row1.CreateCell(0);
                cell.SetCellValue("产品大类");
                sheet.SetColumnWidth(0, 25 * 256);
                cell.CellStyle = style;   //绑定样式到单元格上
                cell = row1.CreateCell(1);
                cell.SetCellValue("检测对象");
                sheet.SetColumnWidth(1, 30 * 256);
                cell.CellStyle = style;
                cell = row1.CreateCell(2);
                cell.SetCellValue("检测标准");
                sheet.SetColumnWidth(2, 60 * 256);
                cell.CellStyle = style;
                cell = row1.CreateCell(3);
                cell.SetCellValue("收样说明");
                sheet.SetColumnWidth(0, 20 * 256);
                cell.CellStyle = style;
            }
            string value = "";
            for (int j = 0; j < dt_item.Rows.Count; j++)
            {
                if (j == 0 && i == 0)
                {
                    ICell cell = row1.CreateCell(4);
                    cell.SetCellValue("检测项目");
                    sheet.SetColumnWidth(4, 50 * 256);
                    cell.CellStyle = style;
                    cell = row1.CreateCell(5);
                    cell.SetCellValue("检测周期");
                    cell.CellStyle = style;
                    cell = row1.CreateCell(6);
                    cell.SetCellValue("检测费用");
                    cell.CellStyle = style;
                    cell = row1.CreateCell(7);
                    cell.SetCellValue("检测部门");
                    sheet.SetColumnWidth(7, 25 * 256);
                    cell.CellStyle = style;
                    Excel_row++;
                }
                row1 = sheet.CreateRow(Excel_row);
                string deptName = TypeConverter.ObjectToString(dt.Rows[i]["parameterDeptName"]);
                for (int ij = 0; ij < dt.Columns.Count; ij++)
                {
                    string ColumnName = dt.Columns[ij].ColumnName;
                    switch (ColumnName)
                    {
                        case "productTypeName":
                            value = TypeConverter.ObjectToString(dt.Rows[i]["productTypeName"]);
                            ICell cell0 = row1.CreateCell(0);
                            cell0.SetCellValue(value);
                            cell0.CellStyle = style;
                            break;
                        case "testingObject":
                            value = TypeConverter.ObjectToString(dt.Rows[i]["testingObject"]);
                            ICell cell1 = row1.CreateCell(1);
                            cell1.SetCellValue(value);
                            cell1.CellStyle = style;
                            break;
                        case "testingbasisId":
                            value = TypeConverter.ObjectToString(dt.Rows[i]["testingbasisCode"]) + TypeConverter.ObjectToString(dt.Rows[i]["testingbasisChiName"]) + TypeConverter.ObjectToString(dt.Rows[i]["parameterComment"]);
                            ICell cell2 = row1.CreateCell(2);
                            cell2.SetCellValue(value);
                            cell2.CellStyle = style;
                            break;
                        case "remark":
                            value = TypeConverter.ObjectToString(dt.Rows[i]["remark"]);
                            ICell cell3 = row1.CreateCell(3);
                            cell3.SetCellValue(value);
                            cell3.CellStyle = style;
                            break;
                        default:
                            value = "";
                            break;
                    }
                }
                for (int jj = 0; jj < dt_item.Columns.Count; jj++)
                {
                    string ColumnName = dt_item.Columns[jj].ColumnName;
                    switch (ColumnName)
                    {
                        case "testingItemName":
                            value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingItemName"]);
                            ICell cell4 = row1.CreateCell(4);
                            cell4.SetCellValue(value);
                            break;
                        case "testingTotalDay":
                            value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingTotalDay"]);
                            ICell cell5 = row1.CreateCell(5);
                            cell5.SetCellValue(value);
                            break;
                        case "testingFee":
                            value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingFee"]);
                            ICell cell6 = row1.CreateCell(6);
                            cell6.SetCellValue(value);
                            break;
                        default:
                            value = "";
                            break;
                    }
                }
                ICell cell7 = row1.CreateCell(7);
                cell7.SetCellValue(deptName);
                Excel_row++;
            }
            sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - 1, 0, 0));  //跨行 :开始行,结束行,开始列,结束列
            sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - 1, 1, 1));
            sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - 1, 2, 2));
            sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - 1, 3, 3));
        }
    
        //转为字节数组  
        MemoryStream stream = new MemoryStream();
        workbook.Write(stream);
        var buf = stream.ToArray();
    
        //保存为Excel文件  
        using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write))
        {
            fs.Write(buf, 0, buf.Length);
            fs.Flush();
        }
    }
  • 相关阅读:
    如何在SAP中找表
    SQL SARG
    计算两个时间相差多少年月日的sql算法
    给WordPress添加微博功能
    sqlServer,oracle中case关键字的用法
    SSIS错误之"The Excel Connection Manager is not supported in the 64bit version of SSIS"
    Oracle编程艺术之设置环境
    Quest.Central.For.Databases.v6.1下载地址
    Oracle Database 11g SQL开发指南store模式脚本
    SQL中连接的种类和区别
  • 原文地址:https://www.cnblogs.com/xujunbao/p/10320215.html
Copyright © 2011-2022 走看看