iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用NPOI设置Excel下拉选项
  • 531
分享到

C#使用NPOI设置Excel下拉选项

2024-04-02 19:04:59 531人浏览 独家记忆
摘要

本文实例为大家分享了C#使用NPOI设置excel下拉选项的具体代码,供大家参考,具体内容如下 最近在做一个导出模板的功能,需要限制用户的某些单元格输入的内容。 期望达到的效果:单元

本文实例为大家分享了C#使用NPOI设置excel下拉选项的具体代码,供大家参考,具体内容如下

最近在做一个导出模板的功能,需要限制用户的某些单元格输入的内容。

期望达到的效果:单元格中出现下拉选择,或输入错误时提示。

翻阅了许多资料,终于得到了答案。

然后自己整理下边一些方法,记录下来方便以后使用。

第一种

· 直接设置下拉值,不超过255个字符(优点:逻辑简单 ;缺点:有字符限制)

· 适用于下拉值为固定值,例如:状态、性别等

方法块:

public static void SetCellDropdownList(ISheet sheet, int firstcol, int lastcol, string[] vals)
{
     //设置生成下拉框的行和列
     var cellRegions = new CellRangeAddressList(1, 65535, firstcol, lastcol);
 
     //设置 下拉框内容
     DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(vals);
 
     //绑定下拉框和作用区域,并设置错误提示信息
     HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);
     dataValidate.CreateErrorBox("输入不合法", "请输入或选择下拉列表中的值。");
     dataValidate.ShowPromptBox = true;
 
     sheet.AddValidationData(dataValidate);
}

调用:

HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("sheet1");
ExcelHelper.SetCellDropdownList(sheet, 1, 1, new List<string>() { "男", "女", "保密" }.ToArray());

第二种

· 通过绑定值到sheet中设置下拉

· 适用于数据较多,或灵活控制的值,例如:城市区域、数据表信息等。

方法块:

public static void SetCellDropdownList(HSSFWorkbook workbook, ISheet sheet, string name, int firstcol, int lastcol, string[] vals, int sheetindex = 1)
{
      //先创建一个Sheet专门用于存储下拉项的值
      ISheet sheet2 = workbook.CreateSheet(name);
      //隐藏
      workbook.SetSheetHidden(sheetindex, true);
      int index = 0;
      foreach (var item in vals)
      {
          sheet2.CreateRow(index).CreateCell(0).SetCellValue(item);
          index++;
      }
      //创建的下拉项的区域:
      var rangeName = name + "Range";
      IName range = workbook.CreateName();
      range.RefersToFORMula = name + "!$A$1:$A$" + index;
      range.NameName = rangeName;
      CellRangeAddressList regions = new CellRangeAddressList(0, 65535, firstcol, lastcol);
 
      DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(rangeName);
      HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
      dataValidate.CreateErrorBox("输入不合法", "请输入或选择下拉列表中的值。");
      dataValidate.ShowPromptBox = true;
      sheet.AddValidationData(dataValidate);
}

调用:

HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("sheet1");
var roomTypeList = GetRoomTypeNameList();
ExcelHelper.SetCellDropdownList(workbook, sheet, "RoomTypeDictionary", 1, 1, roomTypeList.ToArray());

另外,延伸联动下拉(直接贴源码了)

方法块:

private void SetCityCellDropdownList(HSSFWorkbook workbook, ISheet sheet, string dictionaryName, int citycol, int areacol, int sheetIndex)
{
    var citylist = GetCityList();
    int citycount = citylist.Count;
    ISheet sheet2 = workbook.CreateSheet(dictionaryName);
    //隐藏
    workbook.SetSheetHidden(sheetIndex, true);
 
    #region 城市区域数据构造
    //城市
    int rowIndex = 0;
    foreach (var item in citylist)
    {
        IRow row = sheet2.CreateRow(rowIndex);
        row.CreateCell(0).SetCellValue(item.Name);
 
        rowIndex++;
    }
    //区域
    int n_rowIndex = 0;
    foreach (var item in citylist)
    {
        int areaIndex = 0;
        foreach (var area in item.AreaList)
        {
            IRow row = sheet2.GetRow(areaIndex);
            if (row == null)
            {
                row = sheet2.CreateRow(areaIndex);
            }
            row.CreateCell(n_rowIndex + 1).SetCellValue(area.Name);
            areaIndex++;
        }
        n_rowIndex++;
    }
    #endregion
 
    #region 设置数据字段范围
    //定义城市
    int columnIndex = 1;
    IName range_Country = workbook.CreateName();
    range_Country.RefersToFormula = string.Format("{0}!${1}$1:${1}${2}", dictionaryName, GetExcelColumnName(columnIndex), citycount);
    range_Country.NameName = "城市";
 
    //定义区
    foreach (var item in citylist)
    {
        int areacount = item.AreaList.Count;
        columnIndex++;
        IName range_area = workbook.CreateName();
        range_area.RefersToFormula = string.Format("{0}!${1}$1:${1}${2}", dictionaryName, GetExcelColumnName(columnIndex), areacount);
        range_area.NameName = item.Name;
    }
 
    //城市列表下拉绑定
    ExcelHelper.SetCellDropdownList(sheet, 1, 65535, citycol, citycol, "城市");
 
    //第二列,跟随第一列联动
    string colName = GetExcelColumnName(areacol);
    for (int j = 1; j < 500; j++)
    {
        ExcelHelper.SetCellDropdownList(sheet, j, j, areacol, areacol, string.Format("INDIRECT(${0}${1})", colName, j + 1));
    }
    #endregion
}
 
private string GetExcelColumnName(int columnNumber)
{
    int dividend = columnNumber;
    string columnName = String.Empty;
    int modulo;
 
    while (dividend > 0)
    {
        modulo = (dividend - 1) % 26;
        columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
        dividend = (int)((dividend - modulo) / 26);
    }
 
    return columnName;
}
public static void SetCellDropdownList(ISheet sheet, int firstRow, int lastRow, int firstCol, int lastCol, string name)
{
    CellRangeAddressList regions = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
    DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(name);
    HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
    dataValidate.CreateErrorBox("输入不合法", "请输入或选择下拉列表中的值。");
    sheet.AddValidationData(dataValidate);
}

调用:

HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("sheet1");
SetCityCellDropdownList(workbook, sheet, "CityDictionary", 1, 2, 1);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用NPOI设置Excel下拉选项

本文链接: https://www.lsjlt.com/news/139946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#使用NPOI设置Excel下拉选项
    本文实例为大家分享了C#使用NPOI设置Excel下拉选项的具体代码,供大家参考,具体内容如下 最近在做一个导出模板的功能,需要限制用户的某些单元格输入的内容。 期望达到的效果:单元...
    99+
    2022-11-13
  • C#如何使用NPOI设置Excel下拉选项
    这篇文章给大家分享的是有关C#如何使用NPOI设置Excel下拉选项的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第一种&middot; 直接设置下拉值,不超过255个字符(优点:逻辑简单 ;缺点:有字符...
    99+
    2023-06-29
  • excel下拉选择项如何设置
    今天小编给大家分享一下excel下拉选择项如何设置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。excel下拉选择项设置方法...
    99+
    2023-07-02
  • Excel下拉选项怎么设置三级菜单
    要在Excel中设置三级菜单的下拉选项,您可以按照以下步骤进行操作:1. 打开Excel,并选择您要设置下拉选项的单元格。2. 在E...
    99+
    2023-09-16
    excel
  • excel下拉菜单选项背景颜色怎么设置
    本篇内容主要讲解“excel下拉菜单选项背景颜色怎么设置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“excel下拉菜单选项背景颜色怎么设置”吧!excel下拉菜单选项背景颜色设置步骤:首先需要...
    99+
    2023-06-30
  • excel下拉列表怎么设置多选
    今天小编给大家分享一下excel下拉列表怎么设置多选的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。excel下拉列表设置多选...
    99+
    2023-07-02
  • 平台下拉选择设置项
    添加下拉选择部件的下拉列表选项,并设置选项内容是否只读。  在窗体的事件管理——加载事件中,为下拉选择部件设置下拉选项:然后在事件管理——控件——下拉选择的值变化事件中添加如下代码:(获...
    99+
    2022-10-18
  • C#利用NPOI操作Excel(单元格设置)
    本文实例为大家分享了C#利用NPOI操作Excel的单元格设置,供大家参考,具体内容如下 一.合并单元格 NOPI支持对单元格进行合并,还有单元格格式设置! 注意: 在进行单元格合并...
    99+
    2022-11-13
  • 基于NPOI用C#开发的Excel以及表格设置
    本文为大家分享了基于NPOI用C#开发的Excel以及表格设置,供大家参考,具体内容如下 最近在项目中需要导出Excel。在这里做个记录。在网上查阅了一些资料。将自己最终的代码分享在...
    99+
    2022-11-13
  • wps表格怎么设置下拉多个选项
    要设置下拉多个选项,你可以使用WPS表格的数据有效性功能。以下是一些步骤来设置下拉多个选项:1. 打开WPS表格并选择你想要设置下拉...
    99+
    2023-09-29
    wps
  • windows电子表格下拉选项如何设置
    这篇文章主要介绍“windows电子表格下拉选项如何设置”,在日常操作中,相信很多人在windows电子表格下拉选项如何设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”windows电子表格下拉选项如何设置...
    99+
    2023-07-02
  • windows电子表格设置下拉选项如何去掉
    这篇文章主要讲解了“windows电子表格设置下拉选项如何去掉”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows电子表格设置下拉选项如何去掉”吧!电子表格设置下拉选项去掉方法:首先...
    99+
    2023-07-02
  • Vue设置select下拉框的默认选项错误怎么解决
    本篇内容介绍了“Vue设置select下拉框的默认选项错误怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近在用vue设置表单数据时...
    99+
    2023-07-04
  • ElementUI下拉组件el-select一次从后端获取选项并设置默认值方式
    目录ElementUI el-select一次从后端获取选项并设置默认值我的解决方案这里我的理解是ElementUI Select设置默认值更改选择后值不改变总结ElementUI ...
    99+
    2023-01-16
    ElementUI下拉组件 ElementUI el-select ElementUI el-select设置默认值
  • 使用选项设置 MySQL 程序变量
    许多 MySQL 程序都具有在运行时使用 SET 语句设置的内部变量。大多数程序变量也可以在服务器启动时设置,借助与指定程序选项相同的语法。示例 1mysql 有一个 max_allowed_pa​​cket 变量,它控制其通信缓冲区的最大...
    99+
    2023-10-22
  • 使用ajax怎么异步读取后台传递回下拉选项的值
    这篇文章将为大家详细讲解有关使用ajax怎么异步读取后台传递回下拉选项的值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。jsp中html相关代码<tr>  &...
    99+
    2023-06-08
  • 使用van-picker 动态设置当前选中项
    目录van-picker 动态设置当前选中项van-picker 选择器空白问题van-picker 动态设置当前选中项 使用vant-field和van-picker、van-po...
    99+
    2022-11-13
    van-picker 设置选中项 van-picker设置选中项
  • WPF中下拉框可作选择项作为只读文本框怎么使用
    本篇内容介绍了“WPF中下拉框可作选择项作为只读文本框怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、需求当前在开发的系统需要一个...
    99+
    2023-07-05
  • WPF中下拉框可作选择项也可以作为只读文本框使用的方法
    目录1、需求2、现有的ComboBox(1)不设置任何参数(2)设置ComboBox.IsEditable=true3、使用VisualTreeHelper单独处理TextBox4、...
    99+
    2023-02-09
    wpf 下拉框 wpf下拉框控件 wpf用户控件下拉文本框
  • SQLServer 错误 41359 当数据库选项 READ_COMMITTED_SNAPSHOT 设置为 ON 时,使用 COMMITTED 隔离级别访问内存优化表的查询不能访问基于磁盘的表。 使用
    详细信息 Attribute 值 产品名称 SQL Server 事件 ID 41359 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SQL_READ_COMMITTED_SNAPSHO...
    99+
    2023-11-05
    级别 内存优化 设置为
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作