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

基于poi生成excel模板并生成下拉选择框

直接上代码(有注释)

public void downloadImportTemplate(HttpServletResponse response) {try {ServletOutputStream outputStream = response.getOutputStream();//创建工作表XSSFWorkbook workbook = new XSSFWorkbook();//标题行的标题List<String> requireRowNameList = Collections.singletonList("订单编号");List<String> optionalRowNameList = Arrays.asList("用户编号");String fileName = "导入模板" + DateUtils.formatDateTime();XSSFSheet sheet = workbook.createSheet("导入模板");XSSFRow row = null;XSSFCell cell = null;//----------------标题样式---------------------XSSFCellStyle titleStyle = workbook.createCellStyle();//标题样式titleStyle.setAlignment(HorizontalAlignment.CENTER);titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);Font titleFont = workbook.createFont();titleFont.setFontHeightInPoints((short) 22);titleFont.setFontName("微软雅黑");titleFont.setBold(true);titleStyle.setFont(titleFont);//----------------列样式2 必填字段显红色---------------------XSSFCellStyle cellStyle2 = workbook.createCellStyle();cellStyle2.setAlignment(HorizontalAlignment.CENTER);cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);Font cellFont2 = workbook.createFont();cellFont2.setFontName("微软雅黑");cellFont2.setBold(true);cellFont2.setColor((short) 0xa); // 红色cellStyle2.setFont(cellFont2);//----------------列样式3 非必填字段显黑色---------------------XSSFCellStyle cellStyle3 = workbook.createCellStyle();cellStyle3.setAlignment(HorizontalAlignment.CENTER);cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);Font cellFont3 = workbook.createFont();cellFont3.setFontName("微软雅黑");cellFont3.setBold(true);cellStyle3.setFont(cellFont3 );//------------------- 创建第一行(字段名) --------------------row = sheet.createRow(0);sheet.setDefaultColumnWidth(20);sheet.autoSizeColumn(1);sheet.autoSizeColumn(1, true);int i = 0;for (; i < requireRowNameList.size(); i++) {cell = row.createCell(i);//必填列红色显示cell.setCellStyle(cellStyle2);cell.setCellValue(requireRowNameList.get(i));}int j = 0;for (; j < optionalRowNameList.size(); i++, j++) {cell = row.createCell(i);//非必填列黑色显示cell.setCellStyle(cellStyle3);cell.setCellValue(optionalRowNameList.get(j));}cell = row.createCell(i);//非必填列黑色显示cell.setCellStyle(cellStyle3);cell.setCellValue("是否通知客户");//--------------------设置下拉选择框的代码-----------------------------//选择框可选值String[] datas = new String[]{"是", "否"};//设置需要生成下拉列表的表格范围,1代表从第二行开始,30000代表一直到第三万零一行,第i+1列开始,到第i+1列;CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 30000, i, i);//生成下拉框内容DataValidationHelper dvHelper = sheet.getDataValidationHelper();DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(datas);DataValidation validation = dvHelper.createValidation(dvConstraint, cellRangeAddressList);//设置错误信息提示validation.setShowErrorBox(true);//对sheet页生效sheet.addValidationData(validation);//------------------------------------------------response.setContentType("application/binary;charset=UTF-8");response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));FileUtils.setAttachmentResponseHeader(response, fileName);workbook.write(outputStream);outputStream.flush();outputStream.close();} catch (Exception e) {log.error("获取导入模板失败e={}", e.getMessage(), e);}}
http://www.lryc.cn/news/140275.html

相关文章:

  • Redis五种类型
  • 通过IP地址如何防范钓鱼网站诈骗?
  • useEffect使用详解
  • element-table的动态操作,自动以表格,动态新增行、列,删除行列
  • python--文件管理系统
  • uniapp 微信小程序:RecorderManager 录音DEMO
  • __call__和__init__和__new__和__str__和__repr__
  • 设计模式--工厂模式(Factory Pattern)
  • 【Android】 No matching variant of com.android.tools.build:gradle:[版本号] was found
  • 650V 1200V碳化硅二极管MOS管规格书参数,6A 8A 10A 15A 20A 封装TO220低VF电压 低内阻特性
  • python基础—python6种基本数据类型及数据类型之间转换
  • Axure RP
  • java使用ExcelExportUtil.exportBigExcel导出大文件(非分页)
  • PlantUML文本绘制类图
  • 5分钟理解NPL算法 之 马尔可夫链 Markov Chain
  • C#_GDI+ 绘图编程入门
  • 自己写一个svg转化为安卓xml的工具类
  • 基于随机森林的机器启动识别,基于随机森林的智能家居电器启动识别
  • Apache Doris 极简运维之BE扩缩容(1)
  • MySQL每日一练--校园教务系统
  • 9.阿里Sentinel哨兵
  • 设计模式之工厂方法模式
  • 【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟
  • Moonbeam生态跨链互操作项目汇总
  • 基于社会群体算法优化的BP神经网络(预测应用) - 附代码
  • 208. 实现 Trie (前缀树)
  • adb使用总结
  • go:正确引入自己编写的包(如何在 Go 中正确引入自己编写的包)
  • cortex-A7核PWM实验--STM32MP157
  • 电工-学习电工有哪些好处