• 使用NPOI操作execl的实例


    NPoI用于Excel表的导出,导入,可以很方便的操作execl中的样式,格式等

    使用NPoI需要引入dll文件,

    Npoi.dll和lonic.zip.dll.对于开发者主要使用Npoi.Hssf.userModel空间下的,

    HSSfWorkbook,HSSfSheet,HSSfRow,HSSfCell,对应在Npoi.ss.UserModel空间下的,

     Iworkbook,ISheet,IRow,ICell,分别对应Excel文件,工作薄,行,列。

    1.首先引入dll

    2.引入空间

    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using NPOI.SS.Util;
    using NPOI.HSSF.Util;

    3.具体操作步骤:(多个页面数据导入到一个execl中,存在不同的sheet里面,涉及到单元格合并,样式控制等)

    3.1  页面中直接调用下载方法---DownloadToExecl()

     public FileResult DownloadToExecl()
          {
                Guid classEndId = new Guid(Request.QueryString["ClassEndId"]);//获取classEndId值
                string fileName = "execl的文件名";
                MemoryStream stream = new MemoryStream();
                try
                {
                   //先实例化HSSFWorkbook,再创建多个sheet并命名,然后把不同sheet的数据源加入stream中,最后再一次性导出
                   HSSFWorkbook workbook = new HSSFWorkbook();         //创建Workbook 
                    workbook.CreateSheet("第一个Sheet");               //创建sheet1                
                    workbook.CreateSheet("第二个Sheet");                 //创建sheet2                
                    workbook.CreateSheet("第三个Sheet");                 //创建sheet3
                    workbook.CreateSheet("第四个Sheet");                 //创建sheet4                
                    workbook.CreateSheet("第五个Sheet");                 //创建sheet5                
                    workbook.CreateSheet("第六个Sheet");                 //创建sheet6
                  

                    stream = ExportBasicInfoToExcel(classEndId, workbook);              //导出到execl中--sheet1   
                    stream = ExportReportInfoToExcel(classEndId, workbook);                //导出到execl中--sheet2    

                    stream = ExportCourseToExcel(classEndId, workbook);                     //导出到execl中--sheet3   
                    stream = ExportKaoqinToExcel(classEndId, workbook);                     //导出到execl中--sheet4   
                    stream = ExportSummarizeReportToExcel(classEndId, workbook);      //导出到execl中--sheet5    
                    stream = ExamScoreToExcel(classEndId, workbook, 5);                     //导出到execl中--sheet6  
                    stream.Seek(0, SeekOrigin.Begin);
                }

                catch (Exception ex)
                {
                    LogHelper.Error("DownloadToExecl()", ex.Message);
                }

               return File(stream, "application/vnd.ms-excel", fileName);
            }

     3.2 导出数据到execl的具体方法(以sheet1为例)-- ExportBasicInfoToExcel(classEndId, workbook);         

          public MemoryStream ExportBasicInfoToExcel(Guid classEndId, HSSFWorkbook workbook)
            {

               MemoryStream stream = new MemoryStream();
               Stream fs = File(stream, "application/vnd.ms-excel", "DownloadClassEnd.xls").FileStream;
                ISheet sheet = workbook.GetSheetAt(0);//获取sheet
                sheet.DefaultRowHeightInPoints = 35;//设置高
                sheet.DefaultColumnWidth = 30;//设置宽

                //设置第一列显示标题        
                sheet.CreateRow(0).CreateCell(0).SetCellValue("客户技术培训班级报告");
                sheet.CreateRow(1).CreateCell(0).SetCellValue("学员单位");
                sheet.CreateRow(2).CreateCell(0).SetCellValue("学员人数");
                sheet.CreateRow(3).CreateCell(0).SetCellValue("班       号");
                sheet.CreateRow(4).CreateCell(0).SetCellValue("时       长");
                sheet.CreateRow(5).CreateCell(0).SetCellValue("班  主  任");
                sheet.CreateRow(6).CreateCell(0).SetCellValue("副班主任");
                sheet.CreateRow(7).CreateCell(0).SetCellValue("培训项目");
                sheet.CreateRow(8).CreateCell(0).SetCellValue("开始日期");
                sheet.CreateRow(9).CreateCell(0).SetCellValue("结束日期");
                sheet.CreateRow(10).CreateCell(0).SetCellValue("培训地点");
                sheet.CreateRow(11).CreateCell(0).SetCellValue("合       同");

                T_Op_ClassEnd classEnd = classEndBll.GetModel(classEndId);//获取基本信息             
                GetApplyInfoById(classEnd.ApplyID, out classCode, out time, out startTime, out endTime);

                //设置第二列显示数据
                sheet.GetRow(1).CreateCell(1).SetCellValue(classEnd.Company);
                sheet.GetRow(2).CreateCell(1).SetCellValue(classEnd.LearnerCount.ToString());
                sheet.GetRow(3).CreateCell(1).SetCellValue(classCode);
                sheet.GetRow(4).CreateCell(1).SetCellValue(time);
                sheet.GetRow(5).CreateCell(1).SetCellValue(classEnd.Instructor1RealName);
                sheet.GetRow(6).CreateCell(1).SetCellValue(classEnd.Instructor2RealName);
                sheet.GetRow(7).CreateCell(1).SetCellValue(classEnd.ProjectName);
                sheet.GetRow(8).CreateCell(1).SetCellValue(startTime);
                sheet.GetRow(9).CreateCell(1).SetCellValue(endTime);
                sheet.GetRow(10).CreateCell(1).SetCellValue(classEnd.Address);
                sheet.GetRow(11).CreateCell(1).SetCellValue(classEnd.Contract);

               //合并单元格
                sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 1));//客户技术培训班级报告

                //设置标题样式
                ICellStyle titleStyle = workbook.CreateCellStyle();
                IFont titleFont = workbook.CreateFont();
                titleFont.Boldweight = (short)FontBoldWeight.Bold;   //字体加粗样式   
                titleFont.FontHeightInPoints = 30;                   //设置字体大小
                titleFont.Color = HSSFColor.Black.Index;             //设置字体颜色
                titleStyle.SetFont(titleFont);
                titleStyle.Alignment = HorizontalAlignment.Center;   //居中     
                titleStyle.VerticalAlignment = VerticalAlignment.Top;//垂直对齐
               sheet.GetRow(0).GetCell(0).CellStyle = titleStyle;


               //第一列单元格样式
                ICellStyle style = workbook.CreateCellStyle();
                IFont font = workbook.CreateFont();                  //字体
                font.Boldweight = (short)FontBoldWeight.Bold;        //字体加粗样式   
                font.FontHeightInPoints = 15;
                style.SetFont(font);
                style.Alignment = HorizontalAlignment.Center;//水平居中              
                style.VerticalAlignment = VerticalAlignment.Top;//垂直对齐
                for (int i = 1; i <= 11; i++)
                {
                    sheet.GetRow(i).GetCell(0).CellStyle = style;
                }


                //设置第二列的边框
                ICellStyle cellStyle = workbook.CreateCellStyle();
                IFont cellFont = workbook.CreateFont();
                cellFont.FontHeightInPoints = 15;//设置字体大小
                cellFont.Color = HSSFColor.Blue.Index;//设置字体颜色
                cellStyle.SetFont(cellFont);
                cellStyle.BorderBottom = BorderStyle.Thin;
                cellStyle.BottomBorderColor = HSSFColor.Black.Index;
                for (int i = 1; i <= 11; i++)
                {
                    sheet.GetRow(i).GetCell(1).CellStyle = cellStyle;
                    sheet.SetColumnWidth(1, 40 * 500);  //设置第二列的宽度
                }

                workbook.Write(fs);//保存文件     
                return stream;
            }

     

     

     

  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/sunny0515/p/3682452.html
Copyright © 2020-2023  润新知