NPOI 2.3


 樣例

//設置員工編號單元格為文本格式  循環效率問題?
            IDataFormat dataformat = workbook.CreateDataFormat();
            ICellStyle style1 = workbook.CreateCellStyle();
            IDataFormat format = workbook.CreateDataFormat();
            style1.DataFormat = dataformat.GetFormat("text");
            for (int i = 1; i < gowthValue.LastRow; i++)
            {
                NPOI.SS.UserModel.IRow rowID = sheet1.CreateRow(i);
                ICell cell1 = rowID.CreateCell(1);
                cell1.CellStyle = style1;
            }

 

//設置員工編號單元格為文本格式 
            IDataFormat dataformat = workbook.CreateDataFormat();
            ICellStyle style1 = workbook.CreateCellStyle();
            IDataFormat format = workbook.CreateDataFormat();
            style1.DataFormat = dataformat.GetFormat("text");
            sheet1.SetDefaultColumnStyle(1, style1);

 

  /// <summary>
        /// 下載導入數據地圖模板
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public FileResult DownloadMapTemplate()
        {
            NpoiMemoryStream memory = new NpoiMemoryStream();
            IWorkbook workbook = new XSSFWorkbook();
            ISheet sheet=workbook.CreateSheet("導入地圖數據模板");
            IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("項目名稱");
            row.CreateCell(1).SetCellValue("地圖名稱");
            row.CreateCell(2).SetCellValue("地圖類型");
            row.CreateCell(3).SetCellValue("經緯度");
            ISheet sheet1 = workbook.GetSheetAt(0);//獲得第一個工作表  
            CellRangeAddressList regions = new CellRangeAddressList(1, 65535, 2, 2);//約束范圍:c2到c65535  
            XSSFDataValidationHelper helper = new XSSFDataValidationHelper((XSSFSheet)sheet1);//獲得一個數據驗證Helper  
            IDataValidation validation = helper.CreateValidation(helper.CreateExplicitListConstraint(new string[]{"項目","標段","橋梁","隧道"}), regions);//創建約束
            validation.CreateErrorBox("錯誤", "請按右側下拉箭頭選擇!");//不符合約束時的提示  
            validation.ShowErrorBox = true;//顯示上面提示 = True  
            sheet1.AddValidationData(validation);//添加進去  
            sheet1.ForceFormulaRecalculation = true;  
 
 
            memory.AllowClose = false;
            workbook.Write(memory);
            memory.Flush();
            memory.Position = 0;    // 指定內存流起始值
            
            return File(memory, "application/vnd.ms-excel","地圖模板下載.xlsx");
        }

 實戰代碼

  public FileResult DownloadExcel()
        {
            //獲得配置信息
            Models.GrowthValueExcel gowthValue = Common.GrowthValueConfHelper.GetGrowthValueExcel();

            //創建XSSFWorkbook->CreateSheet
            NPOI.XSSF.UserModel.XSSFWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook();
            NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet(gowthValue.Title);

            //指定列寬度
            sheet1.SetColumnWidth(4, 12 * 256);
            sheet1.SetColumnWidth(5, 20 * 256);

            //設置員工編號單元格為文本格式 
            IDataFormat dataformat = workbook.CreateDataFormat();
            ICellStyle style1 = workbook.CreateCellStyle();
            style1.DataFormat = dataformat.GetFormat("text");
            sheet1.SetDefaultColumnStyle(1, style1);

            //給sheet1添加第一行的頭部標題
            NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
            row1.CreateCell(0).SetCellValue(gowthValue.Name);

            //設置員工編號單元格為文本格式
            row1.CreateCell(1).SetCellValue(gowthValue.UserCode);
            row1.CreateCell(2).SetCellValue(gowthValue.MedalName);
            row1.CreateCell(3).SetCellValue(gowthValue.ScoreReason);
            row1.CreateCell(4).SetCellValue(gowthValue.Score);
            row1.CreateCell(5).SetCellValue(gowthValue.Time);

            //得分項下拉列表
            CellRangeAddressList regions = new CellRangeAddressList(1, gowthValue.LastRow, 2, 2);//約束范圍:c2到c65535  
            XSSFDataValidationHelper helper = new XSSFDataValidationHelper((XSSFSheet)sheet1);//獲得一個數據驗證Helper 
            Dictionary<string, int> MedalDic = Bll.MedalCaChe.GetMedalFromDictionary();
            IDataValidation validation = helper.CreateValidation(helper.CreateExplicitListConstraint(MedalDic.Keys.ToArray()), regions);//創建約束
            validation.CreateErrorBox("錯誤", "請按右側下拉箭頭選擇!");//不符合約束時的提示  
            validation.ShowErrorBox = true;//顯示上面提示 = True  
            sheet1.AddValidationData(validation);//添加進去  
            sheet1.ForceFormulaRecalculation = true;

            //通過內存流下載
            NpoiMemoryStream memory = new NpoiMemoryStream();
            memory.AllowClose = false;
            workbook.Write(memory);
            memory.Flush();
            memory.Position = 0;
            return File(memory, "application/vnd.ms-excel", $"{gowthValue.Title}.xlsx");
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM