maven+springmvc下载excle文件——ie8可用
来源:互联网 发布:淘宝买鹦鹉靠谱吗 编辑:程序博客网 时间:2024/06/04 19:24
springmvc下载excle文件
1、新建一个maven的web项目
mvn archetype:generate -DarchetypeCatalog=internal
2、修改pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xueyoucto.xueyou</groupId> <artifactId>springmvnDownloadExcel</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>springmvnDownloadExcel Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jms --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc-portlet --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc-portlet</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-messaging --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-instrument --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-framework-bom --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>4.0.5.RELEASE</version> <type>pom</type> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies> <build> <finalName>springmvnDownloadExcel</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8989/manager/text</url> <username>tomcat</username> <password>tomcat</password> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <!-- 指定编码格式,否则在DOS下运行mvn compile命令时会出现莫名的错误,因为系统默认使用GBK编码 --> <compilerArguments> <extdirs>src/main/webapp/WEB-INF/lib</extdirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <encoding>UTF-8</encoding> <!-- 指定编码格式,否则在DOS下运行mvn命令时当发生文件资源copy时将使用系统默认使用GBK编码 --> </configuration> </plugin> </plugins> </build></project>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <display-name>Archetype Created Web Application</display-name> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>
4、在WEB-INF文件夹下建立springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:component-scan base-package="com.xueyoucto.xueyou.controller"/> <context:component-scan base-package="com.xueyoucto.xueyou.utils"/> <mvc:annotation-driven/> <mvc:resources location="/Component/" mapping="/Component/**"/> <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <mvc:resources location="/css/" mapping="/css/**"/></beans>
5、在webapp中建立文件夹和文件,如下图所示:
6、hello.js
/** * Created by Administrator on 2016-09-07. */var BASE_URL = "http://localhost:8989/springmvnDownloadExcel/";$(function () { var tempjson= [ { "code": "001", "name": "张三", "age": "13", "address": "青岛市", "birthdate": "2000-01-01 00:00:00" }, { "code": "002", "name": "李四", "age": "16", "address": "济南市", "birthdate": "1997-01-01 00:00:00" } ]; var bodyData = JSON.stringify(tempjson); bodyData = bodyData.replace(/"/g,'*'); var Exceldata = { headData:['编号','姓名','年龄','地址','生日'], bodyData:bodyData }; //下载excel $('#excelDownload').click(function () { alert('下载excel'); alert(Exceldata.bodyData); DownLoadFile({ url:BASE_URL + 'Download/testDownLoad', data:Exceldata }) }); //测试按钮 $('#testDownload').click(function () { $.ajax({ type: "POST", url: BASE_URL + 'TestJson/getJson', data: {param:bodyData}, dataType: "json", success: function (data) { alert(data); console.log(data); } }) });});var DownLoadFile = function (options) { var config ={ method: 'post' }; var $form = $('<form method="' + config.method + '" />'); $(document.body).append($form); $form.attr('action', options.url); for (var key in options.data) { $form.append('<input type="hidden" name="' + key + '" value="' + options.data[key] + '" />'); } $form[0].submit(); $form.remove();};
7、hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" pageEncoding="utf-8" %><html><head> <script type="text/javascript" src="${pageContext.request.contextPath}/Component/jquery-1.12.2.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/Component/json2.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/js/hello.js"></script> <title>ccc</title> <meta charset="UTF-8"/></head><body><h1>hello</h1><input id="testDownload" type="button" value="测试服务器响应"><input id="excelDownload" type="button" value="下载excel"><form action="${pageContext.request.contextPath}/TestJson/getJson" method="post"> <input name="param" value="就是我"/> <input type="submit" value="提交"></form></body></html>
8、建立如下后台java文件,如图所示:
9、Download.java
package com.xueyoucto.xueyou.controller;import com.alibaba.fastjson.JSON;import com.xueyoucto.xueyou.utils.ExcelExport;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created by Administrator on 2016-09-06. */@RestController@RequestMapping(value = "/Download", method = {RequestMethod.GET, RequestMethod.POST}, produces = "application/json;charset=UTF-8")public class Download { @RequestMapping(value = "/testDownLoad") public void testDownLoad(HttpServletResponse response, String headData, String bodyData) { System.out.println(headData); bodyData = bodyData.replaceAll("\\*", "\""); System.out.println(bodyData); String[] titleArray = headData.split(","); String[] keyArray = {"code", "name", "age", "address", "birthdate"}; System.out.println("================================"); ExcelExport.getExcelExport().ExportJSONExcel(response, "测试导出", bodyData, titleArray, keyArray); }}
10、TestJson.java
package com.xueyoucto.xueyou.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;import java.io.UnsupportedEncodingException;import java.util.HashMap;import java.util.Map;/** * Created by Administrator on 2016-09-06. */@RestController@RequestMapping(value = "/TestJson",method = {RequestMethod.GET,RequestMethod.POST},produces = "application/json;charset=UTF-8")public class TestJson { @RequestMapping(value = "/getJson") public Map<String,Object> getJson(String param){ System.out.println(param); Map<String,Object> resMap = new HashMap<String, Object>(); resMap.put("resCode","1"); resMap.put("resMessage","成功"); return resMap; } @RequestMapping(value = "/getJson2") public Map<String,Object> inputCustomer(){ Map<String,Object> resMap = new HashMap<String, Object>(); resMap.put("ccc", 123123); return resMap; }}
11、ExcelExport.java
package com.xueyoucto.xueyou.utils;import com.alibaba.fastjson.JSON;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.*;/** * Created by Administrator on 2016/9/5. */public class ExcelExport { private static ExcelExport ee; private HSSFCellStyle headStyle = null; private HSSFWorkbook wb = null; public static ExcelExport getExcelExport() { if (ee == null) { ee = new ExcelExport(); } return ee; } /** * 设置head样式 */ private void headFont() { HSSFFont headFont = wb.createFont(); headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); headFont.setFontName("宋体"); headFont.setFontHeightInPoints((short) 11); headStyle = wb.createCellStyle(); headStyle.setFont(headFont); headStyle.setBorderTop((short) 1); headStyle.setBorderRight((short) 1); headStyle.setBorderBottom((short) 1); headStyle.setBorderLeft((short) 1); headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); } /** * 导出excel * @param response 响应 * @param fileName 文件名 * @param strArray 二维数组 * @throws IOException */ public void ExportExcel(HttpServletResponse response, String fileName, String[][] strArray) throws IOException { if (strArray.length == 0) { return; } int arrayRowCount = strArray.length; int arrayColCount = strArray[0].length; response.reset(); String time = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()); response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName + time + ".xls", "UTF-8")); response.setContentType("application/octet-stream; charset=utf-8"); wb = new HSSFWorkbook(); headFont(); Sheet sh = wb.createSheet(); //设置表头 Row trow = sh.createRow(0); for (int i = 0; i < arrayColCount; i++) { Cell tcell = trow.createCell(i); tcell.setCellStyle(headStyle); tcell.setCellValue(strArray[0][i]); } for (int rownum = 1; rownum < arrayRowCount; rownum++) { Row row = sh.createRow(rownum); for (int cellnum = 0; cellnum < arrayColCount; cellnum++) { Cell cell = row.createCell(cellnum); if (strArray[rownum][cellnum] != null) { cell.setCellValue(strArray[rownum][cellnum]); } } } OutputStream out = response.getOutputStream(); try { wb.write(out); } catch (IOException e) { e.printStackTrace(); } out.flush(); try { out.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 通过JSON导出excel * @param response * @param fileName * @param bodyData * @param titleArray * @param keyArray */ public void ExportJSONExcel(HttpServletResponse response,String fileName,String bodyData, String[] titleArray, String[] keyArray){ if (fileName == null || fileName.equals("")) { System.out.println("文件名不能为空!"); return; } if (bodyData == null || bodyData.equals("")) { System.out.println("导出数据不能为空!"); return; } if(titleArray.length != keyArray.length){ System.out.println("标题内容和JSON中的键个数不同"); return; } Map<String, Object> tempMap = new HashMap<String, Object>(); List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); resList.add(tempMap); resList = JSON.parseObject(bodyData, resList.getClass()); String[][] tempStrArray = JSONtoStringArray(resList,titleArray,keyArray); try { ExportExcel(response,fileName,tempStrArray); } catch (IOException e) { e.printStackTrace(); } } /** * 把JSON和title组成String[][] * @param jsonList * @param titleArray * @param keyArray * @return */ public String[][] JSONtoStringArray(List<Map<String, Object>> jsonList, String[] titleArray, String[] keyArray){ int colCount = titleArray.length; int rowCount = jsonList.size()+1; String[][] resStringArray = new String[rowCount][colCount]; //标题 for (int i = 0; i < titleArray.length; i++) { resStringArray[0][i] = titleArray[i]; } //内容 int k =1; for (Map<String, Object> stringObjectMap : jsonList) { for (int i = 0; i < keyArray.length; i++) { resStringArray[k][i]=stringObjectMap.get(keyArray[i]).toString(); } k++; } return resStringArray; }}
12、编译、部署、运行
点击“测试服务器响应”:
点击“提交”:
点击“下载excel”:
打开excel:
最后的最后,上面的代码在这里:点我下载,不要你的积分噢!!!
如果有什么问题,可以私信我!
0 0
- maven+springmvc下载excle文件——ie8可用
- maven+springmvc下载excle文件——ie8可用(二)
- springmvc 下载文件ie8可用
- IE8+SpringMVC文件上传防止JSON下载
- struts 文件下载——导出Excle/导出PDF
- SpringMVC—文件下载
- a标签实现文件文件下载(ie8可用)
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- ASP.NET中文件流的使用——下载Excle文件、文件的读取和写入
- jsoup抓取url下载excle文件
- IE8 springmvc支持文件上传
- 经测试能用springmvc的文件上传下载并解决ie8文件上传后提示下载
- SpringMVC 解决IE8浏览器把返回报文格式application/json当文件下载的问题
- SpringMVC 解决IE8浏览器把返回报文格式application/json当文件下载的问题
- SpringMVC @ResponseBody在IE8变下载
- 第三次作业——用C#读取Excle文件
- post方式下载文件ie8不支持(二)——中文乱码
- springMVC导入excle poi
- iOS开发:UITableView判断reloadData结束
- MySQL中distinct和group by性能比较
- Android 浅谈 MVP
- 深入理解Yii2.0 » Yii 模式 » 依赖注入和依赖注入容器
- Deep Learning Frameworks
- maven+springmvc下载excle文件——ie8可用
- vb中链接数据库读取相关数据
- 带输入框的自定义dialog 点击外部消失 输入框可以弹出软键盘 去除外部黑框
- 解读v$controlfile
- appcan中uexDocumentReader is not undefined
- 关于react需要知道的几个概念
- Base64
- 堆排序
- ksh & pdksh