样例

//设置员工编号单元格为文本格式  循环效率问题?
IDataFormat dataformat = workbook.CreateDataFormat();
ICellStyle style1 = workbook.CreateCellStyle();
IDataFormat format = workbook.CreateDataFormat();
style1.DataFormat = dataformat.GetFormat("text");
for (int i = ; i < gowthValue.LastRow; i++)
{
NPOI.SS.UserModel.IRow rowID = sheet1.CreateRow(i);
ICell cell1 = rowID.CreateCell();
cell1.CellStyle = style1;
}
//设置员工编号单元格为文本格式
IDataFormat dataformat = workbook.CreateDataFormat();
ICellStyle style1 = workbook.CreateCellStyle();
IDataFormat format = workbook.CreateDataFormat();
style1.DataFormat = dataformat.GetFormat("text");
sheet1.SetDefaultColumnStyle(, 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();
row.CreateCell().SetCellValue("项目名称");
row.CreateCell().SetCellValue("地图名称");
row.CreateCell().SetCellValue("地图类型");
row.CreateCell().SetCellValue("经纬度");
ISheet sheet1 = workbook.GetSheetAt();//获得第一个工作表
CellRangeAddressList regions = new CellRangeAddressList(, , , );//约束范围: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 = ; // 指定内存流起始值 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(, * );
sheet1.SetColumnWidth(, * ); //设置员工编号单元格为文本格式
IDataFormat dataformat = workbook.CreateDataFormat();
ICellStyle style1 = workbook.CreateCellStyle();
style1.DataFormat = dataformat.GetFormat("text");
sheet1.SetDefaultColumnStyle(, style1); //给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow();
row1.CreateCell().SetCellValue(gowthValue.Name); //设置员工编号单元格为文本格式
row1.CreateCell().SetCellValue(gowthValue.UserCode);
row1.CreateCell().SetCellValue(gowthValue.MedalName);
row1.CreateCell().SetCellValue(gowthValue.ScoreReason);
row1.CreateCell().SetCellValue(gowthValue.Score);
row1.CreateCell().SetCellValue(gowthValue.Time); //得分项下拉列表
CellRangeAddressList regions = new CellRangeAddressList(, gowthValue.LastRow, , );//约束范围: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 = ;
return File(memory, "application/vnd.ms-excel", $"{gowthValue.Title}.xlsx");
}

NPOI 2.3的更多相关文章

  1. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  2. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  3. C#通过NPOI操作Excel

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...

  4. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  5. NPOI导出Excel

    using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...

  6. 通过NPOI操作Excel

    最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region exc ...

  7. .Net开源Excel、Word操作组件-NPOI、EPPlus、DocX

    一.NPOI 简介: NPOI is the .NET version of POI Java project. With NPOI, you can read/write Office 2003/2 ...

  8. 转载 NPOI Excel 单元格背景颜色对照表

    NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillP ...

  9. 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

  10. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

随机推荐

  1. ViewDragHelper

    参考:Android 之 ViewDragHelper 详解   Android 之 ViewDragHelper详解(二) 看了几篇博客,并参考了上面的两篇博客,整理一下ViewDragHelper ...

  2. mongoose 入门基本操作

    简介 Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具 那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考:ht ...

  3. 暂时刷完leetcode的一点小体会

    两年前,在实习生笔试的时候,笔试百度,对试卷上很多问题感到不知所云,毫无悬念的挂了 读研两年,今年代笔百度,发现算法题都见过,或者有思路,但一时之间居然都想不到很好的解法,而且很少手写思路,手写代码, ...

  4. ceph PG数量调整/PG的状态说明

    优化: PG Number PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数.调整PGP不会引起PG内的对象的分裂,但是会引起PG的分布的 ...

  5. BZOJ1001[BeiJing2006]狼抓兔子——最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  6. importlib 模块

    根据字符串的模块名实现动态导入模块的库 目录结构 ├── aaa.py ├── bbb.py └── mypackage ├── __init__.py └── xxx.py bbb.py impor ...

  7. day11 匿名函数

    格式 lambda 形参 :逻辑运算方式 lambda x:x+1 普通的方式计算 卧槽.这么长! def calc(x): return x+1 res = calc(10) print(res) ...

  8. MT【69】斯图姆定理

    评:如果说零点存在定理是"只在此山中,云深不知处"的意境.那么斯图姆定理就能处理多项式的零点个数以及定位.

  9. hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)

    题意 如果一个 \(1\to N\) 的排列 \(P=[P_1, P_2, ... P_N]\) 中的任意元素 \(P_i\) 都满足 \(|P_i-i| ≤ K\) ,我们就称 \(P\) 是 \( ...

  10. 自学Linux Shell12.2-test命令

    点击返回 自学Linux命令行与Shell脚本之路 12.2-test命令 if-then语句不能测试命令退出状态码之外的条件,test命令提供了在if-then语句中测试不同条件的途径. 如果tes ...