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

凡科做网站多少钱长沙网站推广排名

凡科做网站多少钱,长沙网站推广排名,超链接网站怎么做,做基础工程分包应上什么网站前言 年关在即,还在最后的迭代处理,还分了个其他同事的单,说是导出的Excel模版的2列要修改为下拉选项,过程很曲折,不说,以下其实就是一个笔记而已! 其实之前分享过阿里的EasyExcel设置单…

前言

        年关在即,还在最后的迭代处理,还分了个其他同事的单,说是导出的Excel模版的2列要修改为下拉选项,过程很曲折,不说,以下其实就是一个笔记而已!
        其实之前分享过阿里的EasyExcel设置单元格下拉框,这里是poi原生设置。


一、场景描述

        其实就是下载一个Excel文件,作为导入的模版,然后有一行示例,2列是字典值,希望给用户的输入做个示例。

二、使用步骤

1.引入库

        主要就是引入poi相关包

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version>
</dependency>

2.工具类

        这里分享工具类的部分方法,免得看的眼花缭乱。
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, Map<String, String> keyValueMap, List<T> list,String fileType, String title, Map<Integer, List<String>> 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, Map<String, String> keyValueMap, List<T> list, String fileType, String title, Map<Integer, List<String>> dropDownMap) throws Exception {List<String> keyList = new ArrayList<>(keyValueMap.keySet());// 存储属性信息Map<String, 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的行),可以是0~65535之间的任何一个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的行),可以是0~65535之间的任何一个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, List<String> 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(List<StationExcel> excelList, HttpServletRequest request, HttpServletResponse response){try {OutputStream outputStream = OutputStreamUtil.getOutputStream(request, response, StationExcel.FILE_NAME);//下拉框数据Map<Integer,List<String>> dropDownMap = new HashMap<>();//查询站点类型List<Dictionary> stationTypeDictList = dictionaryService.queryDictionaryByCategory(CommonConstant.DICT_STATION_TYPE);if(CollectionUtil.isNotEmpty(stationTypeDictList)){List<String> typeList = new ArrayList<>();stationTypeDictList.forEach((e) -> typeList.add(e.getDesc()));dropDownMap.put(1,typeList);}//查询电压等级List<Dictionary> electricPowerLevelDictList = dictionaryService.queryDictionaryByCategory(CommonConstant.DICT_ELECTRIC_POWER_LEVEL_TYPE);if(CollectionUtil.isNotEmpty(electricPowerLevelDictList)){List<String> 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.r43.cn/news/149766.html

相关文章:

  • 做时时彩网站平台有哪些百度搜索推广技巧
  • 学做婴儿衣服网站好河南seo外包
  • 青岛网站建设哪家权威数据分析软件哪个最好用
  • 网站开发在线教程东莞全网推广
  • 网站建设提成方案推广方案万能模板
  • 电玩网站开发网站seo优化价格
  • 程序员做兼职的网站免费开网店免费供货
  • 做税务申报去哪个网站做seo排名好的公司
  • pdf动态网站开发seo网站推广软件排名
  • 微信网站怎么制作短视频seo排名系统
  • wordpress装在xampp深圳seo优化公司排名
  • 太原建站的模板产品如何在网上推广
  • 塘厦网站仿做20个排版漂亮的网页设计
  • 东莞 网站 建设 汽车域名权重是什么意思
  • 做360效果图网站济南seo优化外包
  • 如何建立互联网公司网站广州网站设计制作
  • 网站建设最新流行小网站搜什么关键词好
  • 中国电子网我们seo
  • 网站建设报什么专业图片外链工具
  • 网站的跳出率中国十大网站有哪些
  • 几款免费流程图制作软件沈阳seo公司
  • 秦皇岛在线青海百度关键词seo
  • 化妆品电商网站模板国内广告投放平台
  • 设计网站的收费图是怎么做的宁波正规seo快速排名公司
  • 做机械设备销售的那个网站好资源猫
  • 镇江网站优化推广漯河网站seo
  • 工程建设信息官方网站营销型网站建设多少钱
  • 徐州做网站谁家最专业安卓优化软件
  • 白云网站 建设信科网络seo专业培训费用
  • 做旅游攻略网站好国内重大新闻十条