• springmvc生成文件(excel、pdf...)和文件上传


    生成文件 

    以下以下载excel文件为例,如有其它需要可自定义实现类继承相应springmvc提供的试图接口即可。

    如生成Excel则继承AbstractExcelView,生成PDF则继承AbstractPdfView。

    java代码:

     1     /*
     2      * 导出用户信息到EXCEL
     3      * 
     4      * @return
     5      */
     6     @RequestMapping(value = "/excel")
     7     public ModelAndView exportExcel() {
     8         ModelAndView mv = this.getModelAndView();
     9         PageData pd = new PageData();
    10         pd = this.getPageData();
    11         try {
    12 
    13             // 检索条件===
    14             String USERNAME = pd.getString("USERNAME");
    15             if (null != USERNAME && !"".equals(USERNAME)) {
    16                 USERNAME = USERNAME.trim();
    17                 pd.put("USERNAME", USERNAME);
    18             }
    19             String lastLoginStart = pd.getString("lastLoginStart");
    20             String lastLoginEnd = pd.getString("lastLoginEnd");
    21             if (lastLoginStart != null && !"".equals(lastLoginStart)) {
    22                 lastLoginStart = lastLoginStart + " 00:00:00";
    23                 pd.put("lastLoginStart", lastLoginStart);
    24             }
    25             if (lastLoginEnd != null && !"".equals(lastLoginEnd)) {
    26                 lastLoginEnd = lastLoginEnd + " 00:00:00";
    27                 pd.put("lastLoginEnd", lastLoginEnd);
    28             }
    29             // 检索条件===
    30 
    31             Map<String, Object> dataMap = new HashMap<String, Object>();
    32             List<String> titles = new ArrayList<String>();
    33 
    34             titles.add("用户名"); // 1
    35             titles.add("编号"); // 2
    36             titles.add("姓名"); // 3
    37             titles.add("职位"); // 4
    38             titles.add("手机"); // 5
    39             titles.add("邮箱"); // 6
    40             titles.add("最近登录"); // 7
    41             titles.add("上次登录IP"); // 8
    42 
    43             dataMap.put("titles", titles);
    44 
    45             List<PageData> userList = userService.listAllUser(pd);
    46             List<PageData> varList = new ArrayList<PageData>();
    47             for (int i = 0; i < userList.size(); i++) {
    48                 PageData vpd = new PageData();
    49                 vpd.put("var1", userList.get(i).getString("USERNAME")); // 1
    50                 vpd.put("var2", userList.get(i).getString("NUMBER")); // 2
    51                 vpd.put("var3", userList.get(i).getString("NAME")); // 3
    52                 vpd.put("var4", userList.get(i).getString("ROLE_NAME")); // 4
    53                 vpd.put("var5", userList.get(i).getString("PHONE")); // 5
    54                 vpd.put("var6", userList.get(i).getString("EMAIL")); // 6
    55                 vpd.put("var7", userList.get(i).getString("LAST_LOGIN")); // 7
    56                 vpd.put("var8", userList.get(i).getString("IP")); // 8
    57                 varList.add(vpd);
    58             }
    59 
    60             dataMap.put("varList", varList);
    61 
    62             ObjectExcelView erv = new ObjectExcelView(); // 执行excel操作
    63 
    64             mv = new ModelAndView(erv, dataMap);
    65         } catch (Exception e) {
    66             logger.error(e.toString(), e);
    67         }
    68         return mv;
    69     }

    返回视图类代码: 

     1 package com.fh.util;
     2 
     3 import java.util.Date;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 import org.apache.poi.hssf.usermodel.HSSFCell;
    11 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    12 import org.apache.poi.hssf.usermodel.HSSFFont;
    13 import org.apache.poi.hssf.usermodel.HSSFSheet;
    14 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    15 import org.springframework.web.servlet.view.document.AbstractExcelView;
    16 
    17 
    18 /**
    19  * 导入到EXCEL 类名称:ObjectExcelView.java
    20  * @author link
    21  *
    22  */
    23 public class ObjectExcelView extends AbstractExcelView {
    24 
    25     @Override
    26     protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,
    27             HttpServletResponse response) throws Exception {
    28         // TODO Auto-generated method stub
    29         Date date = new Date();
    30         String filename = Tools.date2Str(date, "yyyyMMddHHmmss");
    31         HSSFSheet sheet;
    32         HSSFCell cell;
    33         response.setContentType("application/octet-stream");
    34         response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
    35         sheet = workbook.createSheet("sheet1");
    36 
    37         List<String> titles = (List<String>) model.get("titles");
    38         int len = titles.size();
    39         HSSFCellStyle headerStyle = workbook.createCellStyle(); // 标题样式
    40         headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    41         headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    42         HSSFFont headerFont = workbook.createFont(); // 标题字体
    43         headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    44         headerFont.setFontHeightInPoints((short) 11);
    45         headerStyle.setFont(headerFont);
    46         short width = 20, height = 25 * 20;
    47         sheet.setDefaultColumnWidth(width);
    48         for (int i = 0; i < len; i++) { // 设置标题
    49             String title = titles.get(i);
    50             cell = getCell(sheet, 0, i);
    51             cell.setCellStyle(headerStyle);
    52             setText(cell, title);
    53         }
    54         sheet.getRow(0).setHeight(height);
    55 
    56         HSSFCellStyle contentStyle = workbook.createCellStyle(); // 内容样式
    57         contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    58         List<PageData> varList = (List<PageData>) model.get("varList");
    59         int varCount = varList.size();
    60         for (int i = 0; i < varCount; i++) {
    61             PageData vpd = varList.get(i);
    62             for (int j = 0; j < len; j++) {
    63                 String varstr = vpd.getString("var" + (j + 1)) != null ? vpd.getString("var" + (j + 1)) : "";
    64                 cell = getCell(sheet, i + 1, j);
    65                 cell.setCellStyle(contentStyle);
    66                 setText(cell, varstr);
    67             }
    68         }
    69     }
    70 }

    文件上传

    springmvc配置文件:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
     4      xmlns:mvc="http://www.springframework.org/schema/mvc"
     5      xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
     6          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     7          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
     8  
     9      <!-- mvc:annotation-driven默认加载了url映射器和适配器 -->
    10      <mvc:annotation-driven />
    11      <mvc:default-servlet-handler />
    12  
    13      <context:component-scan base-package="com.fh.controller" />
    14      <context:component-scan base-package="com.json" />
    15  
    16      <!-- 对静态资源文件的访问 restful -->
    17      <mvc:resources mapping="/admin/**" location="/,/admin/" />
    18      <mvc:resources mapping="/static/**" location="/,/static/" />
    19      <mvc:resources mapping="/plugins/**" location="/,/plugins/" />
    20      <mvc:resources mapping="/uploadFiles/**" location="/,/uploadFiles/" />
    21  
    22      <!-- 访问拦截 -->
    23      <mvc:interceptors>
    24          <mvc:interceptor>
    25              <mvc:mapping path="/**/**" />
    26              <bean class="com.fh.interceptor.LoginHandlerInterceptor" />
    27          </mvc:interceptor>
    28      </mvc:interceptors>
    29  
    30      <!-- 配置SpringMVC的视图解析器 -->
    31      <bean
    32          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    33          <property name="prefix" value="/WEB-INF/jsp/" />
    34          <property name="suffix" value=".jsp" />
    35      </bean>
    36  
    37        <!-- 统一异常处理 -->
    38      <bean id="exceptionResolver" class="com.fh.resolver.MyExceptionResolver"></bean>
    39 
    40      <!-- 文件上传 -->
    41      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    42          <property name="maxUploadSize">
    43              <value>104857600</value>
    44          </property>
    45          <property name="maxInMemorySize">
    46              <value>4096</value>
    47          </property>
    48          <property name="defaultEncoding">
    49              <value>utf-8</value>
    50          </property>
    51      </bean>
    52 </beans>

    jsp代码:

     1     <form action="user/readExcel.do" name="Form" id="Form" method="post" enctype="multipart/form-data">
     2         <div id="zhongxin">
     3         <table style="95%;" >
     4             
     5             <tr>
     6                 <td style="padding-top: 20px;"><input type="file" id="excel" name="excel" style="50px;" onchange="fileType(this)" /></td>
     7             </tr>
     8             <tr>
     9                 <td style="text-align: center;">
    10                     <a class="btn btn-mini btn-primary" onclick="save();">导入</a>
    11                     <a class="btn btn-mini btn-danger" onclick="top.Dialog.close();">取消</a>
    12                     <a class="btn btn-mini btn-success" onclick="window.location.href='<%=basePath%>/user/downExcel.do'">下载模版</a>
    13                 </td>
    14             </tr>
    15         </table>
    16         </div>
    17         <div id="zhongxin2" class="center" style="display:none"><br/><img src="static/images/jzx.gif" /><br/><h4 class="lighter block green"></h4></div>
    18     </form>

     java代码:

     1     /**
     2      * 从EXCEL导入到数据库
     3      */
     4     @RequestMapping(value = "/readExcel")
     5     public ModelAndView readExcel(@RequestParam(value = "excel", required = false) MultipartFile file)
     6             throws Exception {
     7         ModelAndView mv = this.getModelAndView();
     8         PageData pd = new PageData();
     9 
    10         if (null != file && !file.isEmpty()) {
    11             String filePath = PathUtil.getClasspath() + Const.FILEPATHFILE; // 文件上传路径
    12             String fileName = FileUpload.fileUp(file, filePath, "userexcel"); // 执行上传
    13 
    14             List<PageData> listPd = (List) ObjectExcelRead.readExcel(filePath, fileName, 2, 0, 0); // 执行读EXCEL操作,读出的数据导入List
    15                                                                                                     // 2:从第3行开始;0:从第A列开始;0:第0个sheet
    16 
    17             /* 存入数据库操作 */
    18             pd.put("RIGHTS", ""); // 权限
    19             pd.put("LAST_LOGIN", ""); // 最后登录时间
    20             pd.put("IP", ""); // IP
    21             pd.put("STATUS", "0"); // 状态
    22             pd.put("SKIN", "default"); // 默认皮肤
    23 
    24             List<Role> roleList = roleService.listAllERRoles(); // 列出所有二级角色
    25 
    26             pd.put("ROLE_ID", roleList.get(0).getROLE_ID()); // 设置角色ID为随便第一个
    27             /**
    28              * var0 :编号 var1 :姓名 var2 :手机 var3 :邮箱 var4 :备注
    29              */
    30             for (int i = 0; i < listPd.size(); i++) {
    31                 pd.put("USER_ID", this.get32UUID()); // ID
    32                 pd.put("NAME", listPd.get(i).getString("var1")); // 姓名
    33 
    34                 String USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1")); // 根据姓名汉字生成全拼
    35                 pd.put("USERNAME", USERNAME);
    36                 if (userService.findByUId(pd) != null) { // 判断用户名是否重复
    37                     USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1")) + Tools.getRandomNum();
    38                     pd.put("USERNAME", USERNAME);
    39                 }
    40                 pd.put("BZ", listPd.get(i).getString("var4")); // 备注
    41                 if (Tools.checkEmail(listPd.get(i).getString("var3"))) { // 邮箱格式不对就跳过
    42                     pd.put("EMAIL", listPd.get(i).getString("var3"));
    43                     if (userService.findByUE(pd) != null) { // 邮箱已存在就跳过
    44                         continue;
    45                     }
    46                 } else {
    47                     continue;
    48                 }
    49 
    50                 pd.put("NUMBER", listPd.get(i).getString("var0")); // 编号已存在就跳过
    51                 pd.put("PHONE", listPd.get(i).getString("var2")); // 手机号
    52 
    53                 pd.put("PASSWORD", new SimpleHash("SHA-1", USERNAME, "123").toString()); // 默认密码123
    54                 if (userService.findByUN(pd) != null) {
    55                     continue;
    56                 }
    57                 userService.saveU(pd);
    58             }
    59             /* 存入数据库操作*/
    60 
    61             mv.addObject("msg", "success");
    62         }
    63 
    64         mv.setViewName("save_result");
    65         return mv;
    66     }
  • 相关阅读:
    Wampserver主机服务配置方法
    工作记录
    Shell教程
    简单教程
    java笔记
    四轴飞行器
    ace文档
    马尔科夫模型参考
    电子书搜索
    免费电子书
  • 原文地址:https://www.cnblogs.com/link1988/p/5472857.html
Copyright © 2020-2023  润新知