java导出数据到excel
2021/4/9 14:25:09
本文主要是介绍java导出数据到excel,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
开发中难免会遇到要导出数据到excel的,网上有很多方法,但是看起来都很复杂的样子,写得代码非常多,让人望而止步。我做一个简单的导出excel表格功能.只需4步就能实现
1、添加依赖
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
2、页面调用
$('#btn_dc').on('click', function () { location.href='yxjgl.do?action=get_export_data&JGBM='+$('#jg').val()+'&name='+(moment().format('YYYY-MM-DD')+"导出意向金数据") });
3、controller代码
@RequestMapping(params = ("action=get_export_data")) @ResponseBody public void get_export_data(HttpServletRequest request, HttpServletResponse response) { initMap(request); //使用LinkedHashMap,因为防止下面下面循环数据错乱,因为这个是有序的map //查询数据库数据 List<LinkedHashMap> exportlist = yxjmanagementservice.get_export_data(map); //表格列名用ArrayList装载 List<String> columns = new ArrayList<>(); //设置excel表格中的列名 columns.add("长者姓名"); columns.add("性别"); columns.add("年龄"); columns.add("联系电话"); columns.add("收费金额"); columns.add("收费时间"); columns.add("收费人"); //点击导出按钮的时候,页面上显示的标题,同时也是sheet的名称 String filename = map.get("name").toString(); try { //处理一下中文乱码问题 response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gb2312"), "ISO8859-1") + ".xls"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //以上均为数据准备,下面开始调用导出excel工具类 exportToExcel(response, exportlist, filename, columns); }
4、exportToExcel、isNumber方法
public static int exportToExcel(HttpServletResponse response, List<LinkedHashMap> objData, String sheetName, List<String> columns) { int flag = 0; //声明工作簿jxl.write.WritableWorkbook WritableWorkbook wwb; try { //根据传进来的file对象创建可写入的Excel工作薄 OutputStream os = response.getOutputStream(); wwb = jxl.Workbook.createWorkbook(os); /* * 创建一个工作表、sheetName为工作表的名称、"0"为第一个工作表 * 打开Excel的时候会看到左下角默认有3个sheet、"sheet1、sheet2、sheet3"这样 * 代码中的"0"就是sheet1、其它的一一对应。 * createSheet(sheetName, 0)一个是工作表的名称,另一个是工作表在工作薄中的位置 */ WritableSheet ws = wwb.createSheet(sheetName, 0); SheetSettings ss = ws.getSettings(); ss.setVerticalFreeze(1);//冻结表头 WritableFont font1 = new WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.BOLD); // //设置样式,字体 WritableCellFormat wcf = new WritableCellFormat(font1); //背景颜色 wcf.setBackground(jxl.format.Colour.YELLOW); wcf.setAlignment(Alignment.CENTRE); //平行居中 wcf.setVerticalAlignment(VerticalAlignment.CENTRE); //垂直居中 //判断一下表头数组是否有数据 if (columns != null && columns.size() > 0) { //循环写入表头 for (int i = 0; i < columns.size(); i++) { ws.setColumnView(i, 20);//设置列宽 /* * 添加单元格(Cell)内容addCell() * 添加Label对象Label() * 数据的类型有很多种、在这里你需要什么类型就导入什么类型 * 如:jxl.write.DateTime 、jxl.write.Number、jxl.write.Label * Label(i, 0, columns[i], wcf) * 其中i为列、0为行、columns[i]为数据、wcf为样式 * 合起来就是说将columns[i]添加到第一行(行、列下标都是从0开始)第i列、样式为什么"色"内容居中 */ ws.addCell(new Label(i, 0, columns.get(i), wcf)); } //判断表中是否有数据 if (objData != null && objData.size() > 0) { //循环写入表中数据 for (int i = 0; i < objData.size(); i++) { //转换成map集合{activyName:测试功能,count:2} Map<String, Object> map = objData.get(i); //循环输出map中的子集:既列值 int j = 0; DecimalFormat decimalFormat = new DecimalFormat("0.00"); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); for (Object o : map.keySet()) { //ps:因为要“”通用”“导出功能,所以这里循环的时候不是get("Name"),而是通过map.get(o) String content = ""; if (map.get(o).toString().contains(".") && isNumber(map.get(o).toString())) { content = decimalFormat.format(Float.valueOf(map.get(o).toString())); ws.addCell(new Label(j, i + 1, content)); } else if (map.get(o).toString().contains("-") && map.get(o).toString().contains(":")) { content = String.valueOf(map.get(o)).split("\\.")[0]; ws.addCell(new Label(j, i + 1, content)); } else { content = String.valueOf(map.get(o)); ws.addCell(new Label(j, i + 1, content)); } j++; } } } else { flag = -1; } //写入Exel工作表 wwb.write(); //关闭Excel工作薄对象 wwb.close(); //关闭流 os.flush(); os.close(); } } catch (IllegalStateException e) { System.err.println(e.getMessage()); } catch (Exception ex) { flag = 0; ex.printStackTrace(); } return flag; } public static Boolean isNumber(String tg) { if (isNotEmpty(tg)) { try { Double.valueOf(tg); return true; } catch (NumberFormatException e) { } } return false; }
这篇关于java导出数据到excel的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解