您的位置:首页 > 财经 > 金融 > 镇江疫情最新通知_比较好的公文写作网站_seo推广有哪些公司_石家庄新闻最新消息

镇江疫情最新通知_比较好的公文写作网站_seo推广有哪些公司_石家庄新闻最新消息

2024/11/19 15:31:27 来源:https://blog.csdn.net/weixin_39487049/article/details/142454093  浏览:    关键词:镇江疫情最新通知_比较好的公文写作网站_seo推广有哪些公司_石家庄新闻最新消息
镇江疫情最新通知_比较好的公文写作网站_seo推广有哪些公司_石家庄新闻最新消息

背景:

在系统开发过程中,数据导出为 Excel 格式是一个常见的需求。然而,由于各个开发人员的编码习惯和实现方式不同,导致导出代码风格不一。有的人使用第三方库,有的人则自定义实现。这种多样化不仅影响了代码的一致性,也降低了可读性,如下图所示,给后续的维护和协作带来了很大不便。为了提升代码的规范性和可维护性,我们亟需制定统一的 Excel 导出规范和最佳实践。

 

 

 经过优化整理,和参考网上其他作者写的文章,归纳了一下较为简洁的代码。如下所示

public void exportListCommon(HttpServletResponse response, CanHistoryDataReqVO reqVO) throws IOException {String[] columnsTitle = null;// 填充数据行String[][] data = null;HashMap<String, Object> hashMap = getList(new Page().setSize(-1),reqVO);if(hashMap!=null){List<Map<String,Object>> tempTitleList = (List<Map<String, Object>>) hashMap.get("title");List<HashMap<String, Object>> tempValueList =((IPage<HashMap<String, Object>>)hashMap.get("historyDataList")).getRecords();//定义标题长度columnsTitle = new String[tempTitleList.size()];//定义数据长度 new String[数据长度][标题长度];data = new String[tempValueList.size()][tempTitleList.size()];for(int i  = 0 ; i<tempTitleList.size();++i){//标题名赋值columnsTitle[i] = (String) tempTitleList.get(i).get("paramsValue");}//给数据赋值,跟列表头一一对应for (int j = 0 ; j <tempValueList.size();++j){for (int k = 0 ; k <tempTitleList.size(); ++k){data[j][k]= tempValueList.get(j).get(tempTitleList.get(k).get("paramsKey")).toString();}}}ExcelUtil.export("CanHistory",response,columnsTitle,data);}

 动态导出execl数据,这段代码,方便和简洁,适合长期保存使用。

/*** 动态导出execl数据* @param response* @param columnsTitle* @param data* @throws IOException*/public static void export(String fileName,HttpServletResponse response, String[] columnsTitle, String[][] data) throws IOException {// 设置响应类型response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setHeader("Content-Disposition", "attachment; filename="+fileName+".xlsx");// 创建工作簿Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet(fileName);// 设置标题行Row headerRow = sheet.createRow(0);for (int i = 0; i < columnsTitle.length; i++) {Cell cell = headerRow.createCell(i);cell.setCellValue(columnsTitle[i]);}// 填充数据行for (int i = 0; i < data.length; i++) {Row dataRow = sheet.createRow(i + 1);for (int j = 0; j < data[i].length; j++) {Cell cell = dataRow.createCell(j);cell.setCellValue(data[i][j]);}}// 将工作簿写入响应输出流workbook.write(response.getOutputStream());workbook.close();}

 测试样例:

 

 

 效果:

觉得写的不错的朋友,请点点赞!❤❤❤❤❤❤❤❤ 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com