NPOI 添加下拉列表
2024-09-03 21:38:17
需求
给指定列添加下拉列表。如下图:
思路
- NPOI的文档网站不能访问了,这里参考的POI文档。
- 加下拉列表有两种方式,一种直接写字符串,例如
new String[]{"10", "20", "30"})
。这种方式限制最大长度255. - 第二种引用其他单元格。本例中采取的这种方式。新建一个Sheet,将所有选项填入其中。如图中第一行是客户信息,第二行为付款方式信息等等。
代码
/// <summary>
/// The add validation.
/// </summary>
/// <param name="sheet">
/// 要加入列表的sheet
/// </param>
/// <param name="itemSheet">
/// 选项 sheet.
/// </param>
/// <param name="headerCell">
/// 标题单元格
/// </param>
/// <param name="items">
/// 列表项
/// </param>
private static void AddValidation(ISheet sheet, ISheet itemSheet, ICell headerCell, List<string> items)
{
// 新建行
var row = itemSheet.CreateRow(itemSheet.PhysicalNumberOfRows);
// 新行中写入选项
for (int i = 0; i < items.Count; i++)
{
var cell = row.CreateCell(i);
cell.SetCellValue(items[i]);
}
// 要加下拉列表的范围
var addressList = new CellRangeAddressList(
headerCell.RowIndex + 1,
65535,
headerCell.ColumnIndex,
headerCell.ColumnIndex);
var dvHelper = sheet.GetDataValidationHelper();
// 格式 Sheet2!$A$1:$E$1
var dvConstraint = dvHelper.CreateFormulaListConstraint(
$"{itemSheet.SheetName}!$A${row.RowNum + 1}:${Common.Util.NumberToLetter(items.Count)}${row.RowNum + 1}");
var validation = dvHelper.CreateValidation(dvConstraint, addressList);
// 强制必须填下拉列表给出的值
// validation.ShowErrorBox = true;
sheet.AddValidationData(validation);
}
调用以客户列举例
// 获取客户列表
var list = new CustomerBll().GetModelList("dr = 0");
var items = list.Select(c => c.cusname).ToList();
// 添加下拉
AddValidation(sheet, itemsSheet, headerRow.Cells.First(c => c.StringCellValue == "客户名称"), items);
参考资料:
最新文章
- 对应sslocal的简易luci web界面
- python -->; 递归 以及装饰器
- WPF平台Grid控件性能比较
- Linux 下 PHP 扩展 cURL 编译安装
- Matlab之findobj()
- Java和PyPy速度对比
- MySQL配置文件-my.ini
- 简单粗暴的“Debug模式”
- Radis安装
- centos下彻底删除mysql的方法
- oldboy s21day12.设计商城系统,主要提供两个功能:商品管理、会员管理。
- js for 循环示例
- Netty从入门到精通到放弃
- Android获取版本号
- Linux学习笔记:Tomcat安装与使用
- [python]关于在python中模块导入问题追加总结
- JSTL—标签
- Spring3.1.2与Hibernate4.1.8整合
- jstl foreach 取index
- MySQL 存储过程理解
热门文章
- 干净卸载mysql
- 01背包【p1060】开心的金明
- hiho一下第133周 2-SAT&#183;hihoCoder音乐节(2-SAT)(强连通)
- 使用CXF开发RESTFul服务
- BZOJ 3864 Hero Meets Devil
- Android SDK 目录说明
- 理解Promise简单实现的背后原理
- spring-hadoop-samples
- Bloom Filter的应用
- [转载]Install Opera 12.16 Web Browser in CentOS/RHEL and Fedora