当前位置: 首页 > news >正文

宿迁企业网站建设做网站设计公司赚钱吗

宿迁企业网站建设,做网站设计公司赚钱吗,软件库破解版软件合集,北京高端企业网站RT 最近在线上遇到一个很难受的BUG,我一度以为是我代码逻辑出了问题,用了Arthas定位分析之后,开始坚定了信心:大概率是POI的API有问题,比如写入数据过多。 PS:上图为正常的下拉框。但是,当下拉…

RT

最近在线上遇到一个很难受的BUG,我一度以为是我代码逻辑出了问题,用了Arthas定位分析之后,开始坚定了信心:大概率是POI的API有问题,比如写入数据过多。
在这里插入图片描述
PS:上图为正常的下拉框。但是,当下拉选项过多时(跟多少无关,而是跟字节数有关),会导致下拉框内容显示失败

解决办法

功夫不负有心人,根据百度找到了这篇文章《ava POI 利用隐藏sheet实现导出下拉数据太多为空》。

解决思路是:

  1. 使用隐藏sheet来实现下拉框,抛弃旧有的方法

翻译成我这边的代码之后,如下:

创建下拉框单例:

import cn.hutool.core.collection.CollectionUtil;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDataValidationConstraint;
import org.apache.poi.xssf.usermodel.XSSFDataValidationHelper;
import org.apache.poi.xssf.usermodel.XSSFSheet;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** @author feng.zhang* @since 2023-08-17 12:28*/
public class CommonExcelUtil {/*** 给列加下拉选项** @param sheet            sheet页* @param hiddentSheetName 隐藏sheet名* @param colName          需要绑定的列名* @param textList         具体下拉框内容,如   String[] textList = {"男","女};* @param firstRow         起始行(0起算第一行)* @param endRow           结束行(0起算第一行)* @param firstCol         起始列(0起算第一列)* @param endCol           结束列(0起算第一列)**/public static void createBox(Sheet sheet, String hiddentSheetName, String colName, String[] textList, int firstRow, int endRow, int firstCol, int endCol) {List<String> phaseNames = new ArrayList<>(Arrays.asList(textList));int row = CollectionUtil.isEmpty(phaseNames) ? 1 : phaseNames.size();String strFormula = hiddentSheetName + "!$" + colName + "$1:$" + colName + "$" + row;XSSFDataValidationConstraint hiddentConstraint = new XSSFDataValidationConstraint(DataValidationConstraint.ValidationType.LIST, strFormula);// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);// 数据有效性对象DataValidationHelper help = new XSSFDataValidationHelper((XSSFSheet) sheet);DataValidation validation = help.createValidation(hiddentConstraint, regions);sheet.addValidationData(validation);}
}

调用处代码:

private void setTopLevel(Workbook workbook) {String[] array = getDataArray();// 创建隐藏sheetfinal String hiddenSheetName = "hiddenSheetA";final String colName = "A";if (array.length > 0) {workbook.createSheet(hiddenSheetName);workbook.setSheetHidden(workbook.getSheetIndex(workbook.getSheet(hiddenSheetName)), true);Sheet sheet = workbook.getSheet(hiddenSheetName);//sheet.getLastRowNum无法区分 有一行和没有 所以这里先建一行sheet.createRow(0);int colNum = Integer.valueOf(colName.charAt(0)) - 65;Row row; //创建数据行sheet.setColumnWidth(colNum, 4000); //设置每列的列宽for (int j = 0; j < array.length; j++) {if (sheet.getLastRowNum() < j) {row = sheet.createRow(j); //创建数据行} else {row = sheet.getRow(j);}//设置对应单元格的值row.createCell(colNum).setCellValue(array[j]);}}CommonExcelUtil.createBox(workbook.getSheetAt(0), hiddenSheetName, colName, array, 2, topLevelArr.size() + 1000, 6, 6);}

感谢

感谢【博客园】大佬【作者:二次元的程序猿】的文章《ava POI 利用隐藏sheet实现导出下拉数据太多为空》

http://www.yayakq.cn/news/269016/

相关文章:

  • 微信版网站开发网站运行速度慢
  • 没有网站如何做cpa怎样自己做刷赞网站
  • 网站高端网站建设dedecms的网站系统设计结论
  • 福州建网站哪家公司好上海vis设计
  • 网站推广的途径和方法网站换服务器怎么做
  • 富阳有没有做网站的什么是网络营销和技巧
  • 最优惠的郑州网站建设十大暴利行业加盟
  • 企业简介怎么写吸引人seo网站推广专员招聘
  • 上海网站建设 微信开发公司哪家好最近发生的重大新闻事件
  • 优化方案系列丛书seowhy问答
  • 旅游网站管理系统建工网校和建工社是一个吗
  • 网站建设做什么好优质专业建设申报网站
  • 的做网站公司wordpress与cms
  • 开o2o网站需要什么手续怎么才能在百度上做网站推广
  • 网站开发属于网易企业邮箱登录口
  • 企业网站内容洞口网站开发公司
  • 长辛店网站建设阳泉市编办网站三基建设
  • 廊坊网站设计公司wordpress按月归档
  • 网站域名用公司注册信息查询威海哪有网站建设
  • 网站备案接入商变更百度指数只能查90天吗
  • 网站建设规范管理工作做磁性材料在哪些网站推广比较好
  • seo企业站收录工程建设信息官方网站
  • 斗牛网站开发wordpress跟新到5.0.1是英文
  • 广东网站建设制作saas建站平台有哪些
  • 恩施做网站多少钱网站换新的空间域名解析怎么做
  • 做网站优化惠州营销网站建设
  • 通过高权重网站做长尾关键词微信网站建设企业
  • 图列表网站源码网站推广品牌建设
  • 如何在自己电脑上做网站服务器微网站成功案例
  • 大连网站开发工资html5做的网站代码