样例

//设置员工编号单元格为文本格式  循环效率问题?
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. Jquery ajax 表单.serialize() 和serializeArray()序列化$.param()

    .serialize() 方法创建以标准 URL 编码表示的文本字符串.它的操作对象是代表表单元素集合的 jQuery 对象. 表单元素有几种类型: <form> <div>& ...

  2. Node url模块

    const url = require("url");var u = "https://www.jd.com:443/ad/index?uname=qd";// ...

  3. Bootstrap 引入文件顺序及IE兼容性js

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  4. 工资薪金VS劳务报酬

    工资薪金所得与劳务报酬所得两个征税项目在个人所得税应纳税所得额的计算.征收标准等方面都有所不同,因而在实际操作中不可相互混淆. 工资薪金所得属于非独立个人劳务活动,即在机关.团体.学校.部队.企事业单 ...

  5. Linux基础学习(1)--Linux系统简介

    第一章——Linux系统简介 1.UNIX和Linux发展史: 1.1 unix发展史: (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发Mul ...

  6. vue-cli webpack 全局引用jquery

    一.初始化项目 首先,执行vue init webpack F:\ZhaoblTFS\Zeroes\Document\代码示例\vue-cli-webpack-jquery>vue init w ...

  7. 什么是Maven?

    绝大部分Maven用户都会说:Maven是一个“构建工具”——一个用来把源代码构建成可发布的构建的工具. 构建工程师和项目经理会说Maven是一个更复杂的东西:一个项目管理工具. Maven除了提供构 ...

  8. 【Linux】Screen命令

    1.运行screen [root@master2 ~]# screen 2.执行脚本 [root@master2 ~]# sh mgr.sh 命令帮助 更详细的请使用 man screen查看 htt ...

  9. mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache

    1.1  什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时需要构造 s ...

  10. java项目http变更https

    1. 创建 keystore 文件 执行keytool -genkey -v -alias tomcat -keyalg RSA   -validity 3650  -keystore c:\tomc ...