首页 > 编程语言 >C#导出execl带下拉项数据巨多方案

C#导出execl带下拉项数据巨多方案

时间:2024-04-22 19:22:44浏览次数:26  
标签:execl 巨多 下拉项 sheet helper int typesValidation var workbook

这个方法可以解决大数据下拉问题

/// <summary>
        /// 这个是正对整个execel 不是针对某列,所有必须有 IWorkbook workbook, 解决下拉数据量过多,导出之后点击没有反应
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheet"></param>
        /// <param name="firstRow"></param>
        /// <param name="lastRow"></param>
        /// <param name="firstCol"></param>
        /// <param name="lastCol"></param>
        /// <param name="vals"></param>
        private static void SetCellDropdownListHasError2(IWorkbook workbook,ISheet sheet, int firstRow, int lastRow, int firstCol, int lastCol, string[] vals)
        {
            var helper = new XSSFDataValidationHelper((XSSFSheet)sheet);
            var typesRegions = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
            var sheetIndex = 0;
            if (vals.Length > 50)
            {
                var sheetTmpName = "数据源表";
                sheetIndex++;
                ISheet sheetTmp = workbook.CreateSheet(sheetTmpName);
                //隐藏
                workbook.SetSheetHidden(sheetIndex, SheetState.Hidden);
                int index = 0;
                foreach (var item in vals)
                {
                    sheetTmp.CreateRow(index).CreateCell(0).SetCellValue(item);
                    index++;
                }
                //创建的下拉项的区域:
                var rangeName = sheetTmpName + "Range";
                IName range = workbook.CreateName();
                range.RefersToFormula = sheetTmpName + "!$A$1:$A$" + index;
                range.NameName = rangeName;

                #region 创建约束
                var typesValidation = helper.CreateValidation(helper.CreateFormulaListConstraint(rangeName), typesRegions);
                typesValidation.CreateErrorBox("输入不合法", "请输入或选择下拉列表中的值。");
                #endregion

                typesValidation.ShowPromptBox = true;
                sheet.AddValidationData(typesValidation);
            }
            else
            {
                var typesValidation = helper.CreateValidation(helper.CreateExplicitListConstraint(vals), typesRegions);
                typesValidation.CreateErrorBox("输入不合法", "请输入下拉列表中的值!");
                typesValidation.ShowErrorBox = true;
                sheet.AddValidationData(typesValidation);
            }
        }

调用

SetCellDropdownListHasError2(workbook, sheet, 1, dtSource.Rows.Count, 3, 3, flav.ToArray());

效果图

 

参考:https://www.cnblogs.com/wshisboy/p/7887363.html

 

标签:execl,巨多,下拉项,sheet,helper,int,typesValidation,var,workbook
From: https://www.cnblogs.com/xiaohuasan/p/18151300

相关文章

  • 如何将数据平铺到execl某一列并保持原文格式字体
    #首先你要安装#pipinstallpandasopenpyxl#以下是对execl的操作importpandasaspd#你的数据列表percentages=[1.84,1.52,1.58,1.17,0.2,1.4,0.47,0.41,0.04,1.62,0.77,1.52,1.68,1.85,1.88,1.9,0.19,0.23,2.12,0.9,1.69,0.07,0.2......
  • Linux下system()与execl()的区别,popen()
    System与exec的区别1、system()和exec()都可以执行进程外的命令,system是在原进程上开辟了一个新的进程,但是exec是用新进程(命令)覆盖了原有的进程2、system()和exec()都有能产生返回值,system的返回值并不影响原有进程,但是exec的返回值影响了原进程 popen()system()函数用起......
  • 导出execl
    //导出letexportToExcel=async()=>{//创建一个新的工作簿constworkbook=newExcelJS.Workbook();constworksheet=workbook.addWorksheet("Sheet1");//在工作表中添加数据constdata=carStatNum.value;//添加列的数据类型定义worksheet......
  • UniGUI使用ADO组件、调用数据库的存储过程、生成EXECL表的例子
    UniGUI使用ADO组件、调用数据库的存储过程、生成EXECL表的例子(自己学习记录一下,不一定合理,仅供参考)本例子是使用ADO等组件连接一个云服务器的一个数据库,调用GetOrg存储过程,把机构信息展现把结果导出的一个EXECL表里,并下载把显示的HSate的值进行替换1表示正常,其他表示暂停......
  • 读取Execl数据到Datatable或DataSet时 日期单元格出现乱码的解决方案
    Execl某单元格数据为2012-1-10读取到DataTable变为40918不是正确的2012-1-10其实excel在转换格式的时候就自动把日期变成数字了,那这个数字是怎么来的呢?如果你把日期改成1900年1月1日,那么你可以看到他的转换结果是1,以此类推,39902是哪一天就明白了吧解决方法一://strValu......
  • EXECL函数
    1COUNTIF对比两列数据,有相同的即计为1找一列空白列,输入=COUNTIF(范围,条件),按回车,然后再点击表格右下角的"+"就可以拉动持续执行这个函数 2CONCATENATE添加字符串,可添加多个 ......
  • .Net5导入导出execl表格
    .Net5导入导出execl表格通过 usingOfficeOpenXml进行实现usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Reflection;usingOfficeOpenXml;namespaceSino{///<summary>///通用工具类///</summary>publicstat......
  • Python办公自动化(一)对比execl内容
    Python办公自动化(一)对比execl内容安装依赖需要安装的库:openpyxl,pandas如何安装:打开命令行(win+R输入cmd/powershell),输入以下命令pipinstallopenpyxlpipinstallpandas代码新建一个文件夹,新建一个文件,文件名为compare.py,输入以下代码,保存。#使用说明#1.将df1.xlsx......
  • Linux中execl函数详解与日常应用!
    Linux中execl函数详解与日常应用execl是Linux系统中的一个系统调用,用于执行指定路径下的可执行文件。本文将详细介绍execl函数的使用方法和参数含义,并探讨其在日常开发中的常见应用场景和注意事项。1.execl函数概述execl函数属于Linux系统调用之一,其原型为:intexecl(constc......
  • QT cmake工程使用QXlsx源码操作execl,无需编译QXlsx,也不需要下载其他东西,windows和ubu
    一、下载地址:链接二、进入下载好的QXlsx目录下,取出QXlsx目录和README.md待用三、用qt创建一个简单的cmake工程,将QXlsx目录和README.md文件放到cmakelists.txt所在目录 四、修改cmakelists.txt文件cmake_minimum_required(VERSION3.5)project(xlsxTestLANGUAGESCXX)......