NPOI导出excel 设置下拉值


 public void DownloadTemplate(List<string> celNameList, JArray mb_jarray,List<int> cellIndexs,string timeFormat)
        {
            bool isXSSF = true;
            try
            {
                workbook = new XSSFWorkbook();
            }
            catch (Exception ex)
            {
                workbook = new HSSFWorkbook();
                isXSSF = false;
            }
            try
            {
                if (workbook != null)
                {
                    ISheet sheet = workbook.CreateSheet("派遣人员合同数据模板");
                    IRow row = sheet.CreateRow(0);
                    for(int i=0;i< celNameList.Count; i++)
                    {
                        row.CreateCell(i).SetCellValue(celNameList[i]);
                    }
                    ISheet sheet1 = workbook.GetSheetAt(0);//获得第一个工作表 
                    if (isXSSF)
                    {
                        XSSFDataValidationHelper helper = new XSSFDataValidationHelper((XSSFSheet)sheet1);//获得一个数据验证Helper  
                        for (int i = 0; i < mb_jarray.Count; i++)
                        {
                            JArray array =  (JArray)JsonConvert.DeserializeObject(mb_jarray[i]["vlaue"].ToString());
                            
                            CellRangeAddressList regions = new CellRangeAddressList(1, 65535,int.Parse(mb_jarray[i]["cel"].ToString()), int.Parse(mb_jarray[i]["cel"].ToString()));
                            IDataValidation validation = helper.CreateValidation(helper.CreateExplicitListConstraint(array.ToObject<List<string>>().ToArray()), regions);//创建约束
                            validation.CreateErrorBox("错误", "请按右侧下拉箭头选择!");//不符合约束时的提示  
                            validation.ShowErrorBox = true;//显示上面提示 = True  
                            sheet1.AddValidationData(validation);//添加进去 
                        }
                    }
                    else
                    {
                        HSSFDataValidationHelper helper = new HSSFDataValidationHelper((HSSFSheet)sheet1);//获得一个数据验证Helper  

                        for (int i = 0; i < mb_jarray.Count; i++)
                        {
                            JArray array =  (JArray)JsonConvert.DeserializeObject(mb_jarray[i]["vlaue"].ToString());

                            CellRangeAddressList regions = new CellRangeAddressList(1, 65535, int.Parse(mb_jarray[i]["cel"].ToString()), int.Parse(mb_jarray[i]["cel"].ToString()));
                            IDataValidation validation = helper.CreateValidation(helper.CreateExplicitListConstraint(array.ToObject<List<string>>().ToArray()), regions);//创建约束
                            validation.CreateErrorBox("错误", "请按右侧下拉箭头选择!");//不符合约束时的提示  
                            validation.ShowErrorBox = true;//显示上面提示 = True  
                            sheet1.AddValidationData(validation);//添加进去 
                        }
                    }
                    sheet1.ForceFormulaRecalculation = true;
                    if (cellIndexs.Count > 0)
                    {
                        ICellStyle style0 = workbook.CreateCellStyle();
                        IDataFormat dataformat = workbook.CreateDataFormat();
                        style0.DataFormat = dataformat.GetFormat(timeFormat);
                        for (int i = 0; i < cellIndexs.Count; i++)
                        {
                            row.GetCell(cellIndexs[i]).CellStyle = style0;
                        }
                    }
                }


                var ms = new NpoiMemoryStream();
                ms.AllowClose = false;
                workbook.Write(ms);
                ms.Flush();
                ms.Seek(0, SeekOrigin.Begin);
                ms.AllowClose = true;

                HttpContext curContext = HttpContext.Current;
                curContext.Response.ContentType = "application/vnd.ms-excel";
                curContext.Response.ContentEncoding = Encoding.UTF8;
                curContext.Response.Charset = "";
                curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8));
                long fileSize = ms.Length;
                curContext.Response.AddHeader("Content-Length", fileSize.ToString());
                curContext.Response.BinaryWrite(ms.GetBuffer());
                curContext.Response.End();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
            }
        }
       

  new ExcelHelper2(" 导入模板.xls").DownloadTemplate(celNameList, mb_jarray, new List<int> { 4, 17, 18 }, "yyyy-MM-dd");
//列名
                    List<string> celNameList = new List<string>();
                    
                    celNameList.Add("姓名");
                    celNameList.Add("性别");

celNameList.Add("合同状态");。。。

JArray mb_jarray = new JArray();
 //性别 
JObject XBObject = new JObject();
XBObject.Add(
"vlaue", JsonConvert.SerializeObject(new string[] { "", "" }));
XBObject.Add(
"cel", "1");
mb_jarray.Add(XBObject);

//合同状态 JObject ZTObject = new JObject();
ZTObject.Add(
"vlaue", JsonConvert.SerializeObject(new string[] { "正常履行", "已终止" }));
ZTObject.Add(
"cel", "2");
mb_jarray.Add(ZTObject);

 

前台调用
                    <a href="../ashx/dispatch.ashx?action=down" class="easyui-linkbutton" iconcls="icon-export" plain="true">导出模板</a>

 

 

posted @ 2019-03-28 14:38  JaneAi  阅读(1098)  评论(0编辑  收藏  举报