1、js方法
function exporterExcel(){ var no=$("#serchNo").val(); var machineImei=$("#serchMachineImei").val(); var orderNo=$("#serchOrderNo").val(); var status=$("#serchStatus").val(); var dealResult=$("#serchDealResult").val(); var url="../saleAfterMaintainAction/exporterExcel.shtml?queryParam['no']="+no+"&queryParam['machineImei']="+machineImei+"&queryParam['orderNo']="+orderNo+"&queryParam['status']="+status+"&queryParam['dealResult']="+dealResult; window.open(url); }
2、Action
@RequestMapping(value = "/exporterExcel") @ResponseBody public ResultVO exportExcel(QueryVO queryVO, HttpServletRequest request, HttpServletResponse response) { saleAfterMaintainService.exportExcel(queryVO, request, response); return success("导出成功"); }
3、Service
public void exportExcel(QueryVO queryVO, HttpServletRequest req, HttpServletResponse res) { int totalCount = saleAfterMaintainDao.queryCount(queryVO);//数据库查询数据条数 int rows=10; long start = System.currentTimeMillis(); try { LinkedHashMap<String, String> headMap = new LinkedHashMap<String, String>(); headMap.put("no", "保修单号"); headMap.put("name", "姓名"); headMap.put("tel", "电话"); headMap.put("address", "地址"); headMap.put("reason", "保修原因"); headMap.put("machineImei", "设备IMEI"); headMap.put("orderNo", "对应订单号"); headMap.put("status", "状态"); headMap.put("dealResult", "处理结果"); headMap.put("createTime", "创建时间"); // 开始excel生成 SXSSFWorkbook wb = new SXSSFWorkbook(100); Sheet sh = wb.createSheet(); // 表格样式 CellStyle cellStyle = ExportExcel.getContentStyle(wb); // 设置表格宽度 setShColumnWidth(sh); // 循环数据 Row row = sh.createRow(0); int headNum = 0; for (String key : headMap.keySet()) { Cell cell = row.createCell(headNum); cell.setCellValue(headMap.get(key)); cell.setCellStyle(cellStyle); headNum++; } rows = 1000; int pageCount = totalCount % rows == 0 ? totalCount / rows : totalCount / rows + 1; int rowNum = 1; for (int i = 0; i < pageCount; i++) { List<Map<String, Object>> pageList = saleAfterMaintainDao.findPageReturn(queryVO, pageCount, rows);//数据库查询数据 for (Map<String, Object> map : pageList) { row = sh.createRow(rowNum); int index = 0; for (String key : headMap.keySet()) { Cell cell = row.createCell(index); ExportExcel.setCellValue(cell, map, key); cell.setCellStyle(cellStyle); index++; } rowNum++; } } String prePath = req.getSession().getServletContext().getRealPath("/"); File file = new File(prePath); if (!file.exists()) file.mkdirs(); String filePath = prePath + "保修单.xlsx"; FileOutputStream out = new FileOutputStream(filePath); wb.write(out); out.close(); wb.dispose(); ExportExcel.openExcel(req, res, "保修单.xlsx"); LogUtil.writeLog("导出excel的时间:" + (System.currentTimeMillis() - start) / 1000 + "秒"); } catch (Exception e) { LogUtil.writeErrorLog(e.getMessage(), e); } } /** * 设置表格的宽度 * * @param sh */ private void setShColumnWidth(Sheet sh) { sh.setColumnWidth(0, 6000); sh.setColumnWidth(1, 4000); sh.setColumnWidth(2, 4000); sh.setColumnWidth(3, 4000); sh.setColumnWidth(4, 5000); sh.setColumnWidth(5, 5000); sh.setColumnWidth(6, 3000); sh.setColumnWidth(7, 2000); sh.setColumnWidth(8, 5000); sh.setColumnWidth(9, 2000); sh.setColumnWidth(10, 4000); sh.setColumnWidth(11, 6000); sh.setColumnWidth(12, 5000); sh.setColumnWidth(13, 5000); sh.setColumnWidth(14, 5000); sh.setColumnWidth(15, 5000); sh.setColumnWidth(16, 4000); sh.setColumnWidth(17, 5000); }
4、ExportExcel 类
package com.xg.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import com.pay.util.LogUtil; import com.xg.dao.BaseDao; import com.xg.framework.vo.query.QueryVO; public class ExportExcel { /** * 弹出打开框 * * @param request * @param response * @param downName */ public static void openExcel(HttpServletRequest request, HttpServletResponse response, String downName) { BufferedInputStream bis = null; BufferedOutputStream bos = null; String filepath = null; try { filepath = request.getSession().getServletContext().getRealPath("/") + downName; bis = new BufferedInputStream(new FileInputStream(new File(filepath))); bos = new BufferedOutputStream(response.getOutputStream()); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(downName, "utf-8")); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead); } bos.flush(); } catch (FileNotFoundException e) { LogUtil.writeErrorLog(e.getMessage(), e); } catch (IOException e) { LogUtil.writeErrorLog(e.getMessage(), e); } finally { if (null != bis) try { bis.close(); } catch (IOException e) { LogUtil.writeErrorLog(e.getMessage(), e); } if (null != bos) try { bos.close(); } catch (IOException e) { LogUtil.writeErrorLog(e.getMessage(), e); } new File(filepath).delete(); } } public static CellStyle getContentStyle(SXSSFWorkbook wb) { CellStyle cellStyle = wb.createCellStyle(); cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 下边框 cellStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左边框 cellStyle.setBorderTop(CellStyle.BORDER_THIN);// 上边框 cellStyle.setBorderRight(CellStyle.BORDER_THIN);// 右边框 cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 水平居中 cellStyle.setAlignment(CellStyle.VERTICAL_CENTER); // 垂直居中 Font font = wb.createFont(); font.setFontName("宋体");// 设置字体 font.setFontHeightInPoints((short) 10);// 设置字体大小 cellStyle.setFont(font); return cellStyle; } /** * 表格赋值 * * @param cell * @param map * @param key */ public static void setCellValue(Cell cell, Map<String, Object> map, String key) { Object value = map.get(key); if (value == null) { cell.setCellValue(""); } else if (value instanceof Double) { cell.setCellValue(((Double) value).doubleValue()); } else if (value instanceof Date) { Date date = (Date) value; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); cell.setCellValue(sdf.format(date)); } else { String reg = "^\\d+$"; String keyValue = value.toString(); boolean isNum = keyValue.matches(reg); if (isNum) { cell.setCellValue(Double.valueOf(keyValue)); } else { cell.setCellValue(value.toString()); } } } /** * excel导出 * * @param excelWith * * @param machineComboOrderDao * @param queryVO * @param req * @param res * @param headMap * @param excelName * @throws FileNotFoundException * @throws IOException */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static void doExportData(BaseDao baseDao, int[] excelWith, QueryVO queryVO, HttpServletRequest req, HttpServletResponse res, LinkedHashMap<String, String> headMap, String excelName) throws FileNotFoundException, IOException { // 总条数 int totalCount = baseDao.queryCount(queryVO); int rows = 10; long start = System.currentTimeMillis(); // 开始excel生成 SXSSFWorkbook wb = new SXSSFWorkbook(100); Sheet sh = wb.createSheet(); // 表格样式 CellStyle cellStyle = getContentStyle(wb); // 设置表格宽度 setShColumnWidth(sh, excelWith); // 循环数据 Row row = sh.createRow(0); int headNum = 0; for (String key : headMap.keySet()) { Cell cell = row.createCell(headNum); cell.setCellValue(headMap.get(key)); cell.setCellStyle(cellStyle); headNum++; } rows = 1000; int pageCount = totalCount % rows == 0 ? totalCount / rows : totalCount / rows + 1; int rowNum = 1; for (int i = 0; i < pageCount; i++) { List<Map<String, Object>> pageList = baseDao.findPageReturn(queryVO, pageCount, rows); for (Map<String, Object> map : pageList) { row = sh.createRow(rowNum); int index = 0; for (String key : headMap.keySet()) { Cell cell = row.createCell(index); ExportExcel.setCellValue(cell, map, key); cell.setCellStyle(cellStyle); index++; } rowNum++; } } String prePath = req.getSession().getServletContext().getRealPath("/"); File file = new File(prePath); if (!file.exists()) file.mkdirs(); String filePath = prePath + excelName; FileOutputStream out = new FileOutputStream(filePath); wb.write(out); out.close(); wb.dispose(); openExcel(req, res, excelName); LogUtil.writeLog("导出excel的时间:" + (System.currentTimeMillis() - start) / 1000 + "秒");//记入日志 } /** * 设置表格宽度 * * @param sh * @param excelWith */ private static void setShColumnWidth(Sheet sh, int[] excelWith) { for (int i = 0; i < excelWith.length; i++) { sh.setColumnWidth(i, excelWith[i]); } } }
5、jar包
poi-examples-3.13-20150929.jar
poi-excelant-3.13-20150929.jar
poi-ooxml-3.13-20150929.jar
poi-ooxml-schemas-3.13-20150929.jar
poi-scratchpad-3.13-20150929.jar
相关推荐
总的来说,"delphi表格数据导出到excel的控件"为Delphi开发人员提供了一种方便、高效的方法,使得在不深入研究Excel API的情况下也能完成复杂的表格数据导出任务。对于需要处理大量数据并要求与Excel交互的应用程序...
在Java编程环境中,将JSP表格中的数据导出到Excel文件是一种常见的需求,尤其是在数据分析、报表生成和数据交换等场景中。本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及...
“表格导出Excel.vi”是LabVIEW程序,其主要功能是实现从LabVIEW的表格数据导出到Excel文件。这个过程涉及到几个关键步骤: 1. 数据准备:首先,需要将LabVIEW中的表格数据转换成可以被Excel识别的格式。这通常意味...
在"易语言高级表格快速导出EXCEL"这个项目中,开发者可能需要实现以下关键技术点: 1. **数据结构与表格对象**:首先,需要在易语言中创建合适的数据结构来存储表格数据,这通常涉及数组或链表等数据类型。同时,...
本话题聚焦于如何高效地将MSFlexGrid中的数据导出到Excel文件,以适应大量数据处理的需求。 MSFlexGrid控件虽然功能强大,但在处理大量数据时,如果使用传统的FOR循环逐行逐列导出数据,效率会显著降低。为了解决这...
在MATLAB Simulink环境中,将示波器数据导出到Excel表格是一项常见的需求,这有助于数据的存储、分析和进一步处理。以下是一份详细的步骤教程: 首先,我们需要准备一个Simulink模型,在模型中添加必要的组件。核心...
在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面将详细介绍两种有效的方法来实现EasyUI Datagrid数据导出到Excel的功能,并结合提供的文件名来推测具体实现步骤。 *...
总的来说,"易语言高级表格导出EXCEL"涉及到了易语言的表格操作和数据导出能力,这对于需要处理大量数据和生成报表的项目非常实用。通过学习和实践,开发者可以提升自己在易语言环境下处理数据和与Excel交互的能力,...
《易语言高级表格快速导出EXCEL》是一个关于如何在易语言编程环境中高效地将数据导出为Excel格式的教程。易语言是中国本土开发的一种面向对象的、易学易用的编程语言,它旨在降低编程的难度,让更多人能够参与到程序...
总的来说,易语言高级表格数据导出Excel表格涉及的知识点包括: 1. 易语言高级表格组件的使用,包括数据填充、读取和修改。 2. 文件操作命令的掌握,如打开、写入和关闭文件。 3. 数据序列化,特别是将表格数据转换...
layui数据表格导出Excel插件是一款为layui框架设计的实用工具,它允许用户方便地将layui数据表格中的数据导出到Excel文件中。layui是一款轻量级的前端UI框架,以其简洁、优雅的代码风格和丰富的组件库深受开发者喜爱...
标题提到的"将listcontrl控件里的数据导出到excel表格里"就是这样一个需求。 要实现这个功能,你需要遵循以下步骤: 1. **数据获取**:首先,你需要从listctrl控件中读取所有数据。这通常通过遍历控件的所有行和列...
在该方法中,我们使用了第三方组件,例如报表组件或数据导出组件等,该组件提供了丰富的功能来将 DBGrid 的数据导出到 Excel 表格中。 總之,从 DBGrid 导出到 Excel 表格有多种方法,每种方法都有其优缺。开发者...
在IT行业中,前端数据处理和展示是至关重要的,特别是在企业级应用中,用户往往需要将大量数据导出为便于分析的格式,如Excel。本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一...
本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...
winform中将Datatable数据导出到Excel表格中,该项目包含了例子,能使个人能更加了解winform将datatable数据导出到excel的整个流程,本资源也可拿来即用,只需要稍加修改即可。
组态王历史数据导出EXCEL表格的方法 组态王是一种工业自动化软件,具有强大的数据采集和处理能力。为了更好地对历史数据进行分析和处理,需要将其导出到EXCEL表格中。本文将介绍组态王历史数据导出EXCEL表格的方法...
在这篇文章中,我们将介绍如何使用 Delphi 高效率地将数据导出到 Excel 中。 Delphi 中的 Excel 操作 在 Delphi 中,我们可以使用多种方式来操作 Excel,例如使用 OLE 自动化、ADO、DBGridEh 等。其中,使用 OLE ...
本项目"简单实用网页表格数据导出Excel电子表格文件jQuery插件"正是为了解决这一问题。 首先,我们来探讨jQuery的核心概念。jQuery简化了JavaScript的DOM操作,提供了统一的API来选择元素、添加事件处理程序、执行...