樣例
//設置員工編號單元格為文本格式 循環效率問題? 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"); }