首页 > 其他分享 >EasyPoi 导出xlsx下拉列表过长问题解决

EasyPoi 导出xlsx下拉列表过长问题解决

时间:2024-04-22 15:36:35浏览次数:12  
标签:xlsx sheet String 下拉 param 列表 sheetName workbook EasyPoi

问题描述:

通过EasyPoi导出Excel带下拉框字段时,下拉框内值超过255时,会报错

String literals in formulas can't be bigger than 255 characters ASCII


解决方案:

额外创建sheet页去存储下拉框内数据,然后从这个sheet页中读取下拉框数据存到下拉列表中,最后需将额外创建的sheet隐藏。

public static void exportExcelLargeReplace(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response,Integer col, String selectSheetName,String[] replaceList){
        exportXlsLargeReplace(list, pojoClass, fileName, response, new ExportParams(title, sheetName),col,selectSheetName,replaceList);
    }
/**
     * 用于导出下拉列表过大的xlsx
     * @param response
     * @throws IOException
     */
    public static void exportXlsLargeReplace(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams,Integer col, String selectSheetName,String[] replaceList) {
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
        selectList(selectSheetName, 1, workbook, col, col, replaceList);
        downLoadExcel(fileName, response,workbook);
    }
/**
     * 用于处理下拉列表过大
     *
     * @param sheetName
     * @param index
     * @param workbook
     * @param firstCol
     * @param lastCol
     * @param strings
     */
    public static void selectList(String sheetName, Integer index, Workbook workbook, int firstCol, int lastCol, String[] strings) {

        // 创建隐藏的sheet用于存放下拉列表数据
        Sheet hidden = workbook.createSheet(sheetName);

        // 创建单元格对象
        Cell cell = null;

        // 遍历数据数组,将数据放入隐藏的sheet中
        for (int i = 0; i < strings.length; i++) {
            String name = strings[i];
            Row row = hidden.createRow(i);
            cell = row.createCell(0);
            cell.setCellValue(name);
        }

        // 创建名称,用于引用下拉列表数据
        Name namedCell = workbook.createName();
        namedCell.setNameName(sheetName);
        // 设置引用的公式
        namedCell.setRefersToFormula(sheetName + "!$A$1:$A$" + strings.length);

        // 创建下拉列表约束
        DataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) hidden);
        DataValidationConstraint constraint = dvHelper.createFormulaListConstraint(sheetName);
        CellRangeAddressList addressList = new CellRangeAddressList(0, 65535, firstCol, lastCol);
        DataValidation validation = dvHelper.createValidation(constraint, addressList);

        // 将下拉列表约束应用到工作簿中的相应单元格区域
        workbook.setSheetHidden(index, true);
        Sheet sheet = workbook.getSheetAt(0);
        sheet.addValidationData(validation);
    }

 

标签:xlsx,sheet,String,下拉,param,列表,sheetName,workbook,EasyPoi
From: https://www.cnblogs.com/onecyl/p/18150704

相关文章

  • Devexpress GridControl下拉框实现联动
    实现效果1.先在设计界面绑定数据列1.点击设计器2.绑定数据列2.绑定GridView的FocusedRowChanged事件//定义两个下拉框_RIcmbtype:不良分类_RIcmbdefect:不良信息RepositoryItemComboBox_RIcmbtype=newRepositoryItemComboBox();RepositoryItemComboBox......
  • HarmonyOS NEXT应用开发之下拉刷新与上滑加载案例
    介绍本示例介绍使用第三方库的PullToRefresh组件实现列表的下拉刷新数据和上滑加载后续数据。效果图预览使用说明进入页面,下拉列表触发刷新数据事件,等待数据刷新完成。上滑列表到底部,触发加载更多数据事件,等待数据加载完成。实现思路使用第三方库pullToRefresh组件,将列......
  • delphi中Memo1下拉ListBox1选择完成文本填充
    delphi中Memo1下拉ListBox2选择完成文本填充拖一个Memo1下拉ListBox2到界面上,假设ListBox2,里已加载列名最终效果:Memo1里输入.点号,带出ListBox2,选择好列名,回车,将点号和列名输入到Memo1原位置 ......
  • layUI select下拉框动态赋值和设置选中值
    layUIselect下拉框动态赋值和设置选中值<script>layui.use(['form','layedit','laydate'],function(){var$=layui.jquery;$.ajax({url:'../api/SysType/GetArticleType?parentId=1',//json文......
  • 下拉可进行模糊查询
    效果图:1、无默认值 2、可进行输入模糊查询 3、不进行查询可直接点击右侧部分整个下拉出现 <divclass="form-in"><labelclass="control-labellong">地区名称:......
  • vite+xlsx-style表格导出样式设置报错
    项目是vite+vue3,前端表格导出,使用xlsx可以导出基本表格,但是想要设置表格样式,引入xlsx-style,安装依赖,后引入报错引用import { utils } from "xlsx"import { write } from "xlsx-style"Couldnotresolve"./cptable"node_modules/xlsx-style/dist/cpexce......
  • 关于Layui的多层级的下拉选项Select使用教程
    案例代码<selectname="parentSelect"lay-filter="parentSelect"><optionvalue="">请选择父级选项</option><optionvalue="1">父级选项1</option>......
  • Avalonia下拉可搜索树(TreeComboBox)
    1.需求分析  树形下拉的功能是ComboBox和TreeView的功能结合起来,再结合数据模板来实现这一功能。2.代码实现 1.创建UserControl集成TreeView控件`publicclassTreeComboBox:TreeView{privatebool_isPushTextChangedEvent=true;privateButtonClearButton;pri......
  • ElementUI 导出表格数据xlsx
    1.下载相应的依赖(命令如下)npminstall--savexlsxfile-saver 或 yarnaddxlsxfile-saver2.下载完成后引入相应的插件 importFileSaverfrom"file-saver"; import*asXLSXfrom"xlsx";3.给el-table中定义一个id<el-table   :data="list"   id="......
  • antv下拉框展开选项到刚好到浏览器底部触发闪烁,会回弹一下
    关闭下拉框的动画样式.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft{ -webkit-animation-name:unset;......