zoukankan      html  css  js  c++  java
  • NPOI操作Excel简单示例

         根据网上的资料,学习了一下NPOI操作Excel的基本方法:

       1、导出至Excel:标题行合并居中、设置列宽、写入列标题及数据。

        public class ExportToExcel : IHttpHandler //一般处理程序ExportToExcel.ashx
        {
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "application/x-excel";
                string fileName = HttpUtility.UrlEncode("备份.xls");
                context.Response.AddHeader("Content-Disposition", "attachment; fileName=" + fileName); 
                HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个xls;
                HSSFSheet sheet = workbook.CreateSheet("用户信息"); //创建一个Sheet页
                sheet.SetColumnWidth(3, 50 * 256);  //设置列宽,50个字符宽度。宽度参数为1/256,故乘以256
                string connectString = @"server=.\sqlexpress;database=BookShop; uid=sa; pwd=123456";
                SqlConnection connection = new SqlConnection(connectString);
                connection.Open();
                /******************写入标题行,合并居中*********************/
                HSSFRow row = sheet.CreateRow(0);
                HSSFCell cell = row.CreateCell(0);
                cell.SetCellValue("用户信息");
                HSSFCellStyle style = workbook.CreateCellStyle();
                style.Alignment = HSSFCellStyle.ALIGN_CENTER;
                HSSFFont font = workbook.CreateFont();
                font.FontHeight = 20 * 20;
                style.SetFont(font);
                cell.CellStyle = style;
                sheet.AddMergedRegion(new Region(0,0,0,4));
                /******************写入列标题*********************/
                int rowsNum = 1;  //行号
                row = sheet.CreateRow(rowsNum);
                row.CreateCell(0, HSSFCell.CELL_TYPE_STRING).SetCellValue("用户名");
                row.CreateCell(1, HSSFCell.CELL_TYPE_STRING).SetCellValue("密码");
                row.CreateCell(2, HSSFCell.CELL_TYPE_STRING).SetCellValue("姓名");
                row.CreateCell(3, HSSFCell.CELL_TYPE_STRING).SetCellValue("电子邮件");
                row.CreateCell(4, HSSFCell.CELL_TYPE_STRING).SetCellValue("用户组编号");
                using (IDbCommand cmd = connection.CreateCommand()) ;
                {
                    cmd.CommandText = "select * from Users";
                    using (IDataReader reader = cmd.ExecuteReader())
                    {
                        rowsNum = 2;  //行号
                        while (reader.Read())
                        {
                            //根据字段名找出ID
                            string LoginId = reader.GetString(reader.GetOrdinal("LoginId"));
                            string LoginPwd = reader.GetString(reader.GetOrdinal("LoginPwd"));
                            string Name = reader.GetString(reader.GetOrdinal("Name"));
                            string Mail = reader.GetString(reader.GetOrdinal("Mail"));
                            int  userRoleId= reader.GetInt32(reader.GetOrdinal("UserRoleId"));
                            /******************写入字段值*********************/
                            row = sheet.CreateRow(rowsNum);
                            row.CreateCell(0, HSSFCell.CELL_TYPE_STRING).SetCellValue(LoginId);
                            row.CreateCell(1, HSSFCell.CELL_TYPE_STRING).SetCellValue(LoginPwd);
                            row.CreateCell(2, HSSFCell.CELL_TYPE_STRING).SetCellValue(Name);
                            row.CreateCell(3, HSSFCell.CELL_TYPE_STRING).SetCellValue(Mail);
                            row.CreateCell(4, HSSFCell.CELL_TYPE_STRING).SetCellValue(userRoleId);           //整型数据          
                            rowsNum++;
                        }
                    }
                }

                workbook.Write(context.Response.OutputStream);  //输出到流中

            }

            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }

    在其他页面调用:

    <a href="ExportToExcel.ashx">导出到Excel</a>

    2、读取Excel表格数据至DataTable中

    2.1 判断文件类型

    <script type="text/javascript">
          function checkType()
          {     
            //得到上传文件的值
            var fileName=document.getElementById("FileUpLoad1").value;   
            //返回String对象中子字符串最后出现的位置.
            var seat=fileName.lastIndexOf("."); 
            //返回位于String对象中指定位置的子字符串并转换为小写.
            var extension=fileName.substring(seat).toLowerCase();     
            //判断允许上传的文件格式      
            //var allowed=[".jpg",".gif",".png",".bmp",".jpeg"];
            var allowed=[".xls"];
            for(var i=0;i<allowed.length;i++){
                if(!(allowed[i]!=extension)){
                    return true;
                }
            }
            alert("不支持"+extension+"格式");
            return false;
          }
        </script>

    2.2 读取Excle表格,导入至DataTable          

                if (FileUpload1.HasFile)
                {
                    //string fileName = Server.MapPath("~/Export/") + FileUpload1.FileName;
                    //FileUpload1.PostedFile.SaveAs(fileName);

                    try
                    {
                        //DataTable dt = ExcelHelper.Import(fileName, 0, 1);  //Excel表格第0行为表头、第1行为列名。
                        DataTable dt = ExcelHelper.Import(FileUpload1.FileContent, 0, 1);
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                    catch (Exception ex)
                    {
                        JScript.Alert(ex.Message);
                        JScript.Alert("Excel表格格式有误!");
                    }

             }

  • 相关阅读:
    车标知识学习网页开发,与Flask通过base64展示二进制图片 #华为云·寻找黑马程序员#
    大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
    大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#
    【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
    大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
    使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#
    #华为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else
    #华为云·寻找黑马程序员#【代码重构之路】如何优雅的关闭外部资源
    走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing
    开启 J2EE(一)—‘全明星队伍’
  • 原文地址:https://www.cnblogs.com/zhouhb/p/2037262.html
Copyright © 2011-2022 走看看