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

南京市建筑工程网站四川省住房和城乡建设厅网站首页

南京市建筑工程网站,四川省住房和城乡建设厅网站首页,安康市城市建设局网站,工具类网站设计前言 年关在即#xff0c;还在最后的迭代处理#xff0c;还分了个其他同事的单#xff0c;说是导出的Excel模版的2列要修改为下拉选项#xff0c;过程很曲折#xff0c;不说#xff0c;以下其实就是一个笔记而已#xff01; 其实之前分享过阿里的EasyExcel设置单…前言 年关在即还在最后的迭代处理还分了个其他同事的单说是导出的Excel模版的2列要修改为下拉选项过程很曲折不说以下其实就是一个笔记而已         其实之前分享过阿里的EasyExcel设置单元格下拉框这里是poi原生设置。 一、场景描述 其实就是下载一个Excel文件作为导入的模版然后有一行示例2列是字典值希望给用户的输入做个示例。 二、使用步骤 1.引入库 主要就是引入poi相关包 dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion4.1.0/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.0/version /dependency2.工具类 这里分享工具类的部分方法免得看的眼花缭乱。 ExcelTools /*** 导出带下拉框的Excel** param outStream 输出流* param keyValueMap 表头和属性的Map集合,其中Map中Key为Excel列的名称Value为反射类的属性* param list 数据集合* param fileType 文件类型* param title 表头* param dropDownMap 下拉框Map集合,其中Map中Key为Excel列的序号Value为下拉框的值* param T 泛型* throws Exception 异常* auther zhengwen*/public static T void exportDropDownExcel(OutputStream outStream, MapString, String keyValueMap, ListT list,String fileType, String title, MapInteger, ListString dropDownMap) throws Exception {Workbook wb createWorkbook(fileType);exportExcel(wb, outStream, keyValueMap, list, fileType, title, dropDownMap);}/*** 根据文件后缀创建对应的 Workbook* param fileType 文件后缀xls,xlsx* return Workbook*/private static Workbook createWorkbook(String fileType){return ExcelConstant.XLS.equals(fileType) ? new HSSFWorkbook() : new XSSFWorkbook();}/*** 创建带下拉选项的Workbook** param wb Workbook* param outStream 输出流* param keyValueMap 表头和属性的Map集合,其中Map中Key为Excel列的名称Value为反射类的属性* param list 数据集合* param fileType 文件类型* param title 表头* param dropDownMap 下拉框Map集合,其中Map中Key为Excel列的序号Value为下拉框的值* param T 泛型* throws Exception 异常* auther zhengwen*/private static T void exportExcel(Workbook wb, OutputStream outStream, MapString, String keyValueMap, ListT list, String fileType, String title, MapInteger, ListString dropDownMap) throws Exception {ListString keyList new ArrayList(keyValueMap.keySet());// 存储属性信息MapString, String attMap new HashMap(CommonConstant.MAP_DEFAULT_INITIAL_CAPACITY);int index CommonConstant.ZERO;if (ExcelConstant.XLS.equals(fileType)) {// 创建HSSFWorkbook对象(excel的文档对象)CellStyle cellStyle wb.createCellStyle();cellStyle.setWrapText(true);cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);int lastCol keyValueMap.size() - 1;CellRangeAddress callRangeAddress new CellRangeAddress(0, 0, 0, lastCol);// 建立新的sheet对象excel的表单HSSFSheet sheet (HSSFSheet) wb.createSheet(ExcelConstant.SHEET_NAME);// 设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth(20);sheet.addMergedRegion(callRangeAddress);// 声明样式HSSFCellStyle style (HSSFCellStyle) wb.createCellStyle();hssfCellStyleForXls(wb, style);//表格标题HSSFRow rowTitle sheet.createRow(CommonConstant.ZERO);HSSFCell titleCell rowTitle.createCell(0);rowTitle.setHeight((short) 600);//加载单元格样式CellStyle erStyle createCellStyle(wb, (short) 13, true, true);titleCell.setCellStyle(erStyle);titleCell.setCellValue(title);//标题换行设置erStyle.setWrapText(true);titleCell.setCellValue(new HSSFRichTextString(title));// 在sheet里创建第二行为表头参数为行索引(excel的行)可以是065535之间的任何一个HSSFRow rowHeader sheet.createRow(CommonConstant.ONE);DataFormat dataFormat wb.createDataFormat();for (String key : keyList) {HSSFCell cell rowHeader.createCell(index);style.setWrapText(true);//设置为文本,防止科学计数style.setDataFormat(dataFormat.getFormat());cell.setCellStyle(style);cell.setCellValue(key);attMap.put(Integer.toString(index), keyValueMap.get(key));index;}// 在sheet里创建表头下的数据for (int i CommonConstant.ZERO; i list.size(); i) {int rowNum i CommonConstant.TWO;HSSFRow row sheet.createRow(rowNum);for (int j CommonConstant.ZERO; j keyValueMap.size(); j) {String key Integer.toString(j);String att attMap.get(key);T t list.get(i);Object value getAttrVal(t, att);cellStyle.setWrapText(true);Cell cell row.createCell(j);cell.setCellStyle(cellStyle);if (dropDownMap.containsKey(j)) {setCellDropDownBox(cell, dropDownMap.get(j), sheet, rowNum, rowNum, j, j);} else {cell.setCellValue(getObject(value));}}}} else if (ExcelConstant.XLSX.equals(fileType)) {int lastCol keyValueMap.size() - 1;CellRangeAddress callRangeAddress new CellRangeAddress(0, 0, 0, lastCol);// 建立新的sheet对象excel的表单XSSFSheet sheet (XSSFSheet) wb.createSheet(ExcelConstant.SHEET_NAME);// 设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth(20);sheet.addMergedRegion(callRangeAddress);// 声明样式XSSFCellStyle style (XSSFCellStyle) wb.createCellStyle();xssfCellStyleFor2007(wb, style);//标题XSSFRow rowTitle sheet.createRow(CommonConstant.ZERO);rowTitle.setHeight((short) 600);//表格标题XSSFCell titleCell rowTitle.createCell(0);//加载单元格样式CellStyle erStyle createCellStyle(wb, (short) 13, true, true);titleCell.setCellStyle(erStyle);titleCell.setCellValue(title);//标题换行设置erStyle.setWrapText(true);titleCell.setCellValue(new XSSFRichTextString(title));// 在sheet里创建第一行为表头参数为行索引(excel的行)可以是065535之间的任何一个XSSFRow rowHeader sheet.createRow(CommonConstant.ONE);// 创建单元格并设置单元格内容for (String key : keyList) {XSSFCell cell rowHeader.createCell(index);style.setWrapText(true);cell.setCellStyle(style);cell.setCellValue(key);attMap.put(Integer.toString(index), keyValueMap.get(key));index;}// 在sheet里创建表头下的数据for (int i CommonConstant.ZERO; i list.size(); i) {int rowNum i CommonConstant.TWO;XSSFRow row sheet.createRow(rowNum);for (int j CommonConstant.ZERO; j keyValueMap.size(); j) {String key Integer.toString(j);T t list.get(i);Object value getAttrVal(t, attMap.get(key));CellStyle cellStyle wb.createCellStyle();cellStyle.setWrapText(true);cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 下边框cellStyle.setBorderBottom(BorderStyle.THIN);// 左边框cellStyle.setBorderLeft(BorderStyle.THIN);// 上边框cellStyle.setBorderTop(BorderStyle.THIN);// 右边框cellStyle.setBorderRight(BorderStyle.THIN);Font cellfont wb.createFont();cellfont.setFontHeightInPoints((short) 12);cellfont.setFontName(宋体);cellStyle.setFont(cellfont);//row.createCell(j).setCellValue(getObject(value));//row.createCell(j).setCellStyle(cellStyle);//以上2行写的害人的会导致单元格格式丢失DataFormat format wb.createDataFormat();cellStyle.setDataFormat(format.getFormat());//sheet.setDefaultColumnStyle(j, cellStyle);Cell cell row.createCell(j);cell.setCellStyle(cellStyle);if (dropDownMap.containsKey(j)) {setCellDropDownBox(cell, dropDownMap.get(j), sheet, rowNum, rowNum, j, j);} else {cell.setCellValue(getObject(value));}}}}if (null ! wb) {wb.write(outStream);}}/*** 设置cell单元格的下拉框** param cell 单元格* param dropDownMap 下拉框Map集合,其中Map中Key为Excel列的序号Value为下拉框的值* param sheet sheet* param startRow 开始行号* param endRow 结束行号* param startCol 开始列号* param endCol 结束列号* auther zhengwen*/private static void setCellDropDownBox(Cell cell, ListString dropDownMap, Sheet sheet, int startRow, int endRow, int startCol, int endCol) {if (cell null || sheet null) {throw new DreambaseException(单元格或者sheet为空);}// 生成下拉框内容String[] dropDownArray dropDownMap.toArray(new String[0]);//设置下拉框CellRangeAddressList regions new CellRangeAddressList(startRow, endRow, startCol, endCol);if (sheet instanceof XSSFSheet){XSSFSheet xssfSheet (XSSFSheet) sheet;// 生成下拉框DataValidationHelper helper sheet.getDataValidationHelper();DataValidationConstraint constraint helper.createExplicitListConstraint(dropDownArray);DataValidation dataValidation helper.createValidation(constraint, regions);xssfSheet.addValidationData(dataValidation);}if (sheet instanceof HSSFSheet){// 生成下拉框DVConstraint constraint DVConstraint.createExplicitListConstraint(dropDownArray);// 绑定下拉框和作用区域HSSFDataValidation dataValidation new HSSFDataValidation(regions, constraint);sheet.addValidationData(dataValidation);}//设置下拉框选中第一个cell.setCellValue(dropDownArray[0]);}serviceImpl Overridepublic void exportExcel(ListStationExcel excelList, HttpServletRequest request, HttpServletResponse response){try {OutputStream outputStream OutputStreamUtil.getOutputStream(request, response, StationExcel.FILE_NAME);//下拉框数据MapInteger,ListString dropDownMap new HashMap();//查询站点类型ListDictionary stationTypeDictList dictionaryService.queryDictionaryByCategory(CommonConstant.DICT_STATION_TYPE);if(CollectionUtil.isNotEmpty(stationTypeDictList)){ListString typeList new ArrayList();stationTypeDictList.forEach((e) - typeList.add(e.getDesc()));dropDownMap.put(1,typeList);}//查询电压等级ListDictionary electricPowerLevelDictList dictionaryService.queryDictionaryByCategory(CommonConstant.DICT_ELECTRIC_POWER_LEVEL_TYPE);if(CollectionUtil.isNotEmpty(electricPowerLevelDictList)){ListString electricPowerLevelList new ArrayList();electricPowerLevelDictList.forEach((e) - electricPowerLevelList.add(e.getDesc()));dropDownMap.put(3,electricPowerLevelList);}ExcelTools.exportDropDownExcel(outputStream, StationExcel.COLUMN_LIST, excelList, ExcelConstant.XLSX, StationExcel.TITLE, dropDownMap);response.flushBuffer();outputStream.close();} catch (IOException e) {log.error(excel导出失败, e);throw new DreambaseException(excel导出失败IOException异常 e.getMessage());} catch (Exception e) {log.error(excel导出失败, e);throw new DreambaseException(excel导出失败 e.getMessage());}}总结 其实没啥好分享的真的就是个笔记而已希望可以帮到大家
文章转载自:
http://www.morning.qgghj.cn.gov.cn.qgghj.cn
http://www.morning.smj78.cn.gov.cn.smj78.cn
http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn
http://www.morning.dmzfz.cn.gov.cn.dmzfz.cn
http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn
http://www.morning.fpqq.cn.gov.cn.fpqq.cn
http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn
http://www.morning.qmnhw.cn.gov.cn.qmnhw.cn
http://www.morning.bmts.cn.gov.cn.bmts.cn
http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn
http://www.morning.rgwz.cn.gov.cn.rgwz.cn
http://www.morning.wwjft.cn.gov.cn.wwjft.cn
http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn
http://www.morning.gbrps.cn.gov.cn.gbrps.cn
http://www.morning.wrdlf.cn.gov.cn.wrdlf.cn
http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.zycll.cn.gov.cn.zycll.cn
http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn
http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn
http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn
http://www.morning.jhzct.cn.gov.cn.jhzct.cn
http://www.morning.gtylt.cn.gov.cn.gtylt.cn
http://www.morning.rfxw.cn.gov.cn.rfxw.cn
http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn
http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn
http://www.morning.dydqh.cn.gov.cn.dydqh.cn
http://www.morning.qglqb.cn.gov.cn.qglqb.cn
http://www.morning.qqnh.cn.gov.cn.qqnh.cn
http://www.morning.fcpjq.cn.gov.cn.fcpjq.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn
http://www.morning.pjrql.cn.gov.cn.pjrql.cn
http://www.morning.mkccd.cn.gov.cn.mkccd.cn
http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn
http://www.morning.vjdofuj.cn.gov.cn.vjdofuj.cn
http://www.morning.rjkfj.cn.gov.cn.rjkfj.cn
http://www.morning.grxbw.cn.gov.cn.grxbw.cn
http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn
http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn
http://www.morning.coffeedelsol.com.gov.cn.coffeedelsol.com
http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn
http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn
http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn
http://www.morning.kndyz.cn.gov.cn.kndyz.cn
http://www.morning.ttshf.cn.gov.cn.ttshf.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.nptls.cn.gov.cn.nptls.cn
http://www.morning.nlysd.cn.gov.cn.nlysd.cn
http://www.morning.gnmhy.cn.gov.cn.gnmhy.cn
http://www.morning.qdrhf.cn.gov.cn.qdrhf.cn
http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn
http://www.morning.qcztm.cn.gov.cn.qcztm.cn
http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn
http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.cjnfb.cn.gov.cn.cjnfb.cn
http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn
http://www.morning.ggrzk.cn.gov.cn.ggrzk.cn
http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn
http://www.morning.yqqgp.cn.gov.cn.yqqgp.cn
http://www.morning.dqwykj.com.gov.cn.dqwykj.com
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.yqlrq.cn.gov.cn.yqlrq.cn
http://www.morning.yfphk.cn.gov.cn.yfphk.cn
http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn
http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn
http://www.morning.xnwjt.cn.gov.cn.xnwjt.cn
http://www.morning.fprll.cn.gov.cn.fprll.cn
http://www.morning.pmftz.cn.gov.cn.pmftz.cn
http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn
http://www.morning.qbtkg.cn.gov.cn.qbtkg.cn
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn
http://www.morning.rccbt.cn.gov.cn.rccbt.cn
http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn
http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn
http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn
http://www.tj-hxxt.cn/news/239214.html

相关文章:

  • 正能量网站地址链接免费搜网站首页不见了seo
  • 网站制作公司兴田德润i在哪里电商运营是做什么的
  • 免费物业网站模板wordpress禁止谷歌
  • 云南建设厅官方网站建设部网站核对编号
  • 云南网站建设一度科技公司word期刊排版模板
  • 大足网站建设海淀区企业网站建设
  • 奥远网站建设流程wordpress 主题选项
  • 织梦网站后台进不去北京工作室网站建设
  • 常州市天宁区建设局网站电商网站的功能有哪些
  • 创可贴设计网站官网阜新百姓网免费发布信息
  • 如何让网站显示404公司创建
  • 做招聘网站怎么运作什么网站可以看到绵阳建设
  • 北京网站排名seowordpress商城功能
  • 珠海图远建设公司网站太原建站模板
  • 广州网站建设 超凡科技天津网站建设业务
  • 网站的数据库是什么定制公交app下载
  • 物流网站开发下沙做网站的公司
  • 辽宁城建设计院有限公司网站建工e采网
  • 潍坊住房和城乡建设部网站域名解析 别人网站
  • 厦门规划建设局网站网络广告四个特征
  • 为什么网站不建议做充值功能做站用什么网站程序
  • 服务器在国外的网站广告设计跟平面设计
  • 网站建设与维护 电子版做的网站怎样评估价值
  • 站内seo的技巧网站建设与管理实践收获
  • 易点科技有限公司seo关键词排名优化公司
  • 众筹网站建设需要多少资金深圳做小程序网站设计
  • 如何添加网站wordpress 列表多图
  • 苏州品牌网站设计企业北京建站设计
  • 建设门户网站预算找做企业网站
  • 公司的网站建设费用怎么入账网站通栏是什么