Java通用Excel导出工具类实例

需积分: 11 6 下载量 172 浏览量 更新于2024-09-08 收藏 10KB TXT 举报
通用导出Excle表格工具类是一个在Java中实现的实用工具,用于将数据集合导出为Excel文件。该类由`com.qiyuan.util.NewExportToExcelUtil`包下的`NewExportToExcelUtil`类定义,主要方法是`export()`,其核心功能是将数据对象转换成Excel表格,并支持自定义表头(通过`LinkedHashMap<String, String> fieldMap`参数提供)和文件名(默认为当前日期时间)。以下是关于此类的主要知识点: 1. **方法签名**: - `public static <T> void export(String excelName, List<T> list, LinkedHashMap<String, String> fieldMap, HttpServletResponse response)` - 方法接受四个参数: - `excelName`: 要导出的Excel文件名,如果为空,则自动设置为当前日期时间。 - `list`: 需要导出的数据集合,这里的泛型 `<T>` 表示列表中的元素可以是任何类型。 - `fieldMap`: 字段映射表,用作表头信息,键值对表示列名和对应的字段名。 - `response`: `HttpServletResponse` 对象,用于将文件输出到浏览器,这使得导出的文件可以在用户的浏览器中直接下载。 2. **文件格式处理**: - 使用Apache POI库,特别是`HSSFWorkbook`类,来操作Excel文件。`HSSFWorkbook`代表一个完整的Excel工作簿,而`HSSFSheet`则代表一个工作簿中的工作表。 3. **数据转换**: - 数据集合(List<T>)中的每个元素会被转换为一行数据。可能涉及到反射技术,遍历对象的属性(Field),将其值与`fieldMap`中的列名匹配,填充到Excel的单元格中。 4. **样式和格式**: - 提供了对单元格样式的控制,虽然这部分代码未在提供的部分显示,但可以推测在实际使用中,可能会定义不同的样式(如字体、颜色、边框)来美化导出的Excel。 5. **响应生成**: - `HttpServletResponse`用于向客户端发送文件,通过设置响应头如`Content-Disposition`,指定文件类型和名称,使用户可以直接下载。这种方式支持浏览器直接下载,而非直接在网页上查看。 6. **错误处理**: - 没有提供详细的错误处理代码,但通常在处理IO流和文件操作时,应确保处理可能出现的异常,如`UnsupportedEncodingException`或文件写入失败等。 总结来说,这个通用导出Excel工具类是一个实用的辅助工具,适用于Java开发者在需要批量导出数据到Excel文件的场景,它简化了创建Excel的工作,提高了开发效率。使用时,只需传入数据源、字段映射和输出响应即可。
2018-07-31 上传
下载excel表格工具类。controller:@RequestMapping(value = "/form", method = RequestMethod.GET) public ModelAndView downloadForm(HttpServletRequest request) { try {List<Map<String,Object>> listLog = maintainlogService.selectListByDownload(memberId,date,keyword);//查询数据库中的数据 //excel数据 List<Object> listData = new ArrayList<Object>(); if (null != listLog && listLog.size()>0){ BigDecimal totalPrice = new BigDecimal("0.0");//总金额 int count = 0;//总笔数 for(Map<String,Object> map : listLog){ totalPrice = totalPrice.add(new BigDecimal(map.get("maintainPrice").toString())); count ++; List<Object> data = new ArrayList<Object>(); data.add(map.get("addDate")); data.add(map.get("carUserName")); data.add(map.get("telPhone")); data.add(map.get("licence")); data.add(map.get("carBrand")); data.add(map.get("carQuestion")); data.add(map.get("maintainConten")); data.add(map.get("maintainPrice")); data.add(map.get("maintainDate")); if (StringUtils.isEmpty(memberId)){ data.add(map.get("mainName")); data.add(map.get("mainPhone")); } listData.add(data); } //excel表格最后一行 List<Object> footer = new ArrayList<Object>(); footer.add("总计:"); footer.add(count+"笔"); footer.add(totalPrice.doubleValue()+"元"); listData.add(footer); } //excel 头部 Map<String,Integer> mapRow = new LinkedHashMap<String,Integer>(); mapRow.put("日期",20 * 256); mapRow.put("车主",20 * 256); mapRow.put("车主电话",20 * 256); mapRow.put("车牌",20 * 256); mapRow.put("汽车品牌",20 * 256); mapRow.put("车辆问题",20 * 256); mapRow.put("维修内容",40 * 256); mapRow.put("维修金额",20 * 256); mapRow.put("维修日期",20 * 256); if (StringUtils.isEmpty(memberId)){ mapRow.put("维修商",30 * 256); mapRow.put("维修商电话",30 * 256); } //设置excel Map<String, Object> result = new HashMap<String, Object>(); result.put("excelTitle", date+"月信息明细"); result.put("excelName", date+"月信息明细数据"); result.put("titleMap", mapRow); result.put("dataList", listData); ExcelView excelView = new ExcelView(); return new ModelAndView(excelView, result); } catch (Exception e) { e.printStackTrace(); } return new ModelAndView(); js:function download(){ var date = $("#stime").val(); var keyword = $("#keyword").val(); [removed].href="<%=basePath%>/admin/mainInfo/form?date="+date+"&keyword;="+encodeURI(keyword); }