SSM框架使用POI技术导出Excel表

    xiaoxiao2021-03-25  98

     

     

    POI框架是Apache开源的可以导出导入Excel表的,本博客介绍在SSM(spring+SpringMVC+Mybatis)项目里,如何使用POI框架,导出Excel

    这里我们先要去Apache官网下载jar

     

    然后,就可以先编程了

    先提供一个封装的httpservlet请求和添加数据的类

    [java] view plain copy

     

    1.  public class PageData extends HashMap implements Map{  

    2.        

    3.      private static final long serialVersionUID = 1L;  

    4.        

    5.      Map map = null;  

    6.      HttpServletRequest request;  

    7.        

    8.      public PageData(HttpServletRequest request){  

    9.          this.request = request;  

    10.         Map properties = request.getParameterMap();  

    11.         Map returnMap = new HashMap();   

    12.         Iterator entries = properties.entrySet().iterator();   

    13.         Map.Entry entry;   

    14.         String name = "";    

    15.         String value = "";    

    16.         while (entries.hasNext()) {  

    17.             entry = (Map.Entry) entries.next();   

    18.             name = (String) entry.getKey();   

    19.             Object valueObj = entry.getValue();   

    20.             if(null == valueObj){   

    21.                 value = "";   

    22.             }else if(valueObj instanceof String[]){   

    23.                 String[] values = (String[])valueObj;  

    24.                 for(int i=0;i<values.length;i++){   

    25.                      value = values[i] + ",";  

    26.                 }  

    27.                 value = value.substring(0, value.length()-1);   

    28.             }else{  

    29.                 value = valueObj.toString();   

    30.             }  

    31.             returnMap.put(name, value);   

    32.         }  

    33.         map = returnMap;  

    34.     }  

    35.       

    36.     public PageData() {  

    37.         map = new HashMap();  

    38.     }  

    39.       

    40.     @Override  

    41.     public Object get(Object key) {  

    42.         Object obj = null;  

    43.         if(map.get(key) instanceof Object[]) {  

    44.             Object[] arr = (Object[])map.get(key);  

    45.             obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]);  

    46.         } else {  

    47.             obj = map.get(key);  

    48.         }  

    49.         return obj;  

    50.     }  

    51.       

    52.     public String getString(Object key) {  

    53.         return (String)get(key);  

    54.     }  

    55.       

    56.     @SuppressWarnings("unchecked")  

    57.     @Override  

    58.     public Object put(Object key, Object value) {  

    59.         return map.put(key, value);  

    60.     }  

    61.       

    62.     @Override  

    63.     public Object remove(Object key) {  

    64.         return map.remove(key);  

    65.     }  

    66.   

    67.     public void clear() {  

    68.         map.clear();  

    69.     }  

    70.   

    71.     public boolean containsKey(Object key) {  

    72.         // TODO Auto-generated method stub  

    73.         return map.containsKey(key);  

    74.     }  

    75.   

    76.     public boolean containsValue(Object value) {  

    77.         // TODO Auto-generated method stub  

    78.         return map.containsValue(value);  

    79.     }  

    80.   

    81.     public Set entrySet() {  

    82.         // TODO Auto-generated method stub  

    83.         return map.entrySet();  

    84.     }  

    85.   

    86.     public boolean isEmpty() {  

    87.         // TODO Auto-generated method stub  

    88.         return map.isEmpty();  

    89.     }  

    90.   

    91.     public Set keySet() {  

    92.         // TODO Auto-generated method stub  

    93.         return map.keySet();  

    94.     }  

    95.   

    96.     @SuppressWarnings("unchecked")  

    97.     public void putAll(Map t) {  

    98.         // TODO Auto-generated method stub  

    99.         map.putAll(t);  

    100.     }  

    101.   

    102.     public int size() {  

    103.         // TODO Auto-generated method stub  

    104.         return map.size();  

    105.     }  

    106.   

    107.     public Collection values() {  

    108.         // TODO Auto-generated method stub  

    109.         return map.values();  

    110.     }  

    111.       

    112. }  

    写个实体类:

    会员类

    [java] view plain copy

     

    1.  public class Member {  

    2.        

    3.      /** 

    4.       * 会员账号 

    5.       */  

    6.      private String memberID;  

    7.        

    8.      /** 

    9.       * 会员密码 

    10.      */  

    11.     private String password;  

    12.       

    13.     /** 

    14.      * 会员级别 

    15.      */  

    16.     private String rank;  

    17.       

    18.     /** 

    19.      * 会员积分 

    20.      */  

    21.     private int credit;  

    22.       

    23.     /** 

    24.      * 会员手机号 

    25.      */  

    26.     private String phone;  

    27.       

    28.     /** 

    29.      * 会员皮肤 

    30.      */  

    31.     private String imgPath;  

    32.       

    33.     private List<GroupPost> postes;  

    34.   

    35.     public List<GroupPost> getPostes() {  

    36.         return postes;  

    37.     }  

    38.   

    39.     public void setPostes(List<GroupPost> postes) {  

    40.         this.postes = postes;  

    41.     }  

    42.   

    43.     public String getMemberID() {  

    44.         return memberID;  

    45.     }  

    46.   

    47.     public void setMemberID(String memberID) {  

    48.         this.memberID = memberID;  

    49.     }  

    50.   

    51.     public String getPassword() {  

    52.         return password;  

    53.     }  

    54.   

    55.     public void setPassword(String password) {  

    56.         this.password = password;  

    57.     }  

    58.   

    59.     public String getRank() {  

    60.         return rank;  

    61.     }  

    62.   

    63.     public void setRank(String rank) {  

    64.         this.rank = rank;  

    65.     }  

    66.   

    67.     public int getCredit() {  

    68.         return credit;  

    69.     }  

    70.   

    71.     public void setCredit(int credit) {  

    72.         this.credit = credit;  

    73.     }  

    74.   

    75.     public String getPhone() {  

    76.         return phone;  

    77.     }  

    78.   

    79.     public void setPhone(String phone) {  

    80.         this.phone = phone;  

    81.     }  

    82.   

    83.     public String getImgPath() {  

    84.         return imgPath;  

    85.     }  

    86.   

    87.     public void setImgPath(String imgPath) {  

    88.         this.imgPath = imgPath;  

    89.     }  

    90.       

    91. }  

     

    DAO.Java

    [java] view plain copy

     

    1.  package com.appweb.core.dao;  

    2.    

    3.  public interface DAO {  

    4.        

    5.      /** 

    6.       * 保存对象 

    7.       * @param str 

    8.       * @param obj 

    9.       * @return 

    10.      * @throws Exception 

    11.      */  

    12.     public Object save(String str, Object obj) throws Exception;  

    13.       

    14.     /** 

    15.      * 修改对象 

    16.      * @param str 

    17.      * @param obj 

    18.      * @return 

    19.      * @throws Exception 

    20.      */  

    21.     public Object update(String str, Object obj) throws Exception;  

    22.       

    23.     /** 

    24.      * 删除对象  

    25.      * @param str 

    26.      * @param obj 

    27.      * @return 

    28.      * @throws Exception 

    29.      */  

    30.     public Object delete(String str, Object obj) throws Exception;  

    31.   

    32.     /** 

    33.      * 查找对象 

    34.      * @param str 

    35.      * @param obj 

    36.      * @return 

    37.      * @throws Exception 

    38.      */  

    39.     public Object findForObject(String str, Object obj) throws Exception;  

    40.   

    41.     /** 

    42.      * 查找对象 

    43.      * @param str 

    44.      * @param obj 

    45.      * @return 

    46.      * @throws Exception 

    47.      */  

    48.     public Object findForList(String str, Object obj) throws Exception;  

    49.       

    50.     /** 

    51.      * 查找对象封装成Map 

    52.      * @param s 

    53.      * @param obj 

    54.      * @return 

    55.      * @throws Exception 

    56.      */  

    57.     public Object findForMap(String sql, Object obj, String key , String value) throws Exception;  

    58.       

    59. }  

    DAOSupport类:

    [java] view plain copy

     

    1.  package com.appweb.core.dao;  

    2.    

    3.  import java.util.List;  

    4.    

    5.  import javax.annotation.Resource;  

    6.    

    7.  import org.apache.ibatis.session.ExecutorType;  

    8.  import org.apache.ibatis.session.SqlSession;  

    9.  import org.apache.ibatis.session.SqlSessionFactory;  

    10. import org.mybatis.spring.SqlSessionTemplate;  

    11. import org.springframework.stereotype.Repository;  

    12.   

    13. @Repository("daoSupport")  

    14. public class DaoSupport implements DAO {  

    15.   

    16.     @Resource(name = "sqlSessionTemplate")  

    17.     private SqlSessionTemplate sqlSessionTemplate;  

    18.       

    19.     /** 

    20.      * 保存对象 

    21.      * @param str 

    22.      * @param obj 

    23.      * @return 

    24.      * @throws Exception 

    25.      */  

    26.     public Object save(String str, Object obj) throws Exception {  

    27.         return sqlSessionTemplate.insert(str, obj);  

    28.     }  

    29.       

    30.     /** 

    31.      * 批量更新 

    32.      * @param str 

    33.      * @param obj 

    34.      * @return 

    35.      * @throws Exception 

    36.      */  

    37.     public Object batchSave(String str, List objs )throws Exception{  

    38.         return sqlSessionTemplate.insert(str, objs);  

    39.     }  

    40.       

    41.     /** 

    42.      * 修改对象 

    43.      * @param str 

    44.      * @param obj 

    45.      * @return 

    46.      * @throws Exception 

    47.      */  

    48.     public Object update(String str, Object obj) throws Exception {  

    49.         return sqlSessionTemplate.update(str, obj);  

    50.     }  

    51.   

    52.     /** 

    53.      * 批量更新 

    54.      * @param str 

    55.      * @param obj 

    56.      * @return 

    57.      * @throws Exception 

    58.      */  

    59.     public void batchUpdate(String str, List objs )throws Exception{  

    60.         SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();  

    61.         //批量执行器  

    62.         SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);  

    63.         try{  

    64.             if(objs!=null){  

    65.                 for(int i=0,size=objs.size();i<size;i++){  

    66.                     sqlSession.update(str, objs.get(i));  

    67.                 }  

    68.                 sqlSession.flushStatements();  

    69.                 sqlSession.commit();  

    70.                 sqlSession.clearCache();  

    71.             }  

    72.         }finally{  

    73.             sqlSession.close();  

    74.         }  

    75.     }  

    76.       

    77.     /** 

    78.      * 批量更新 

    79.      * @param str 

    80.      * @param obj 

    81.      * @return 

    82.      * @throws Exception 

    83.      */  

    84.     public Object batchDelete(String str, List objs )throws Exception{  

    85.         return sqlSessionTemplate.delete(str, objs);  

    86.     }  

    87.       

    88.     /** 

    89.      * 删除对象  

    90.      * @param str 

    91.      * @param obj 

    92.      * @return 

    93.      * @throws Exception 

    94.      */  

    95.     public Object delete(String str, Object obj) throws Exception {  

    96.         return sqlSessionTemplate.delete(str, obj);  

    97.     }  

    98.        

    99.     /** 

    100.      * 查找对象 

    101.      * @param str 

    102.      * @param obj 

    103.      * @return 

    104.      * @throws Exception 

    105.      */  

    106.     public Object findForObject(String str, Object obj) throws Exception {  

    107.         return sqlSessionTemplate.selectOne(str, obj);  

    108.     }  

    109.   

    110.     /** 

    111.      * 查找对象 

    112.      * @param str 

    113.      * @param obj 

    114.      * @return 

    115.      * @throws Exception 

    116.      */  

    117.     public Object findForList(String str, Object obj) throws Exception {  

    118.         return sqlSessionTemplate.selectList(str, obj);  

    119.     }  

    120.       

    121.     public Object findForMap(String str, Object obj, String key, String value) throws Exception {  

    122.         return sqlSessionTemplate.selectMap(str, obj, key);  

    123.     }  

    124.       

    125. }  

     

    写个Service:

    [java] view plain copy

     

    1.  /** 

    2.       * 会员信息列表 

    3.       * @param pd 

    4.       * @return 

    5.       * @throws Exception 

    6.       */  

    7.      public List<PageData> listM(PageData pd)throws Exception{  

    8.          return (List<PageData>)dao.findForList("MemberMapper.memberList", pd);  

    9.      }  

    ObjectExcelView.java:

    [java] view plain copy

     

    1.  package com.appweb.core.view;  

    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. import com.appweb.core.entity.PageData;  

    18. import com.appweb.core.utils.Tools;  

    19.   

    20. /** 

    21. 导入到EXCEL 

    22. 类名称:ObjectExcelView.java 

    23. 类描述:  

    24.  */  

    25. public class ObjectExcelView extends AbstractExcelView{  

    26.   

    27.     @Override  

    28.     protected void buildExcelDocument(Map<String, Object> model,  

    29.             HSSFWorkbook workbook, HttpServletRequest request,  

    30.             HttpServletResponse response) throws Exception {  

    31.         // TODO Auto-generated method stub  

    32.         Date date = new Date();  

    33.         String filename = Tools.date2Str(date, "yyyyMMddHHmmss");  

    34.         HSSFSheet sheet;  

    35.         HSSFCell cell;  

    36.         response.setContentType("application/octet-stream");  

    37.         response.setHeader("Content-Disposition""attachment;filename="+filename+".xls");  

    38.         sheet = workbook.createSheet("sheet1");  

    39.           

    40.         List<String> titles = (List<String>) model.get("titles");  

    41.         int len = titles.size();  

    42.         HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式  

    43.         headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);  

    44.         headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  

    45.         HSSFFont headerFont = workbook.createFont();    //标题字体  

    46.         headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  

    47.         headerFont.setFontHeightInPoints((short)11);  

    48.         headerStyle.setFont(headerFont);  

    49.         short width = 20,height=25*20;  

    50.         sheet.setDefaultColumnWidth(width);  

    51.         for(int i=0; i<len; i++){ //设置标题  

    52.             String title = titles.get(i);  

    53.             cell = getCell(sheet, 0, i);  

    54.             cell.setCellStyle(headerStyle);  

    55.             setText(cell,title);  

    56.         }  

    57.         sheet.getRow(0).setHeight(height);  

    58.           

    59.         HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式  

    60.         contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);  

    61.         List<PageData> varList = (List<PageData>) model.get("varList");  

    62.         int varCount = varList.size();  

    63.         for(int i=0; i<varCount; i++){  

    64.             PageData vpd = varList.get(i);  

    65.             for(int j=0;j<len;j++){  

    66.                 String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";  

    67.                 cell = getCell(sheet, i+1, j);  

    68.                 cell.setCellStyle(contentStyle);  

    69.                 setText(cell,varstr);  

    70.             }  

    71.               

    72.         }  

    73.           

    74.     }  

    75.   

    76. }  

    控制类导出Excel表:

    [java] view plain copy

     

    1.  /** 

    2.       * 导出Excel 

    3.       * @return 

    4.       * @throws Exception 

    5.       */  

    6.      @RequestMapping("/exportExcel")  

    7.      public ModelAndView exportExcel()throws Exception{  

    8.          ModelAndView mv = this.getModelAndView();  

    9.          PageData pd = new PageData();  

    10.         pd = this.getPageData();  

    11.         //检索条件  

    12.         Map<String,Object> dataMap = new HashMap<String,Object>();  

    13.         List<String> titles = new ArrayList<String>();  

    14.           

    15.         titles.add("用户名");  

    16.         titles.add("密码");  

    17.         titles.add("级别");  

    18.         titles.add("积分");  

    19.         titles.add("手机号");  

    20.           

    21.         dataMap.put("titles", titles);  

    22.           

    23.         List<PageData> memberList = memberService.listM(pd);  

    24.         List<PageData> varList = new ArrayList<PageData>();  

    25.         for(int i=0;i<memberList.size();i++){  

    26.             PageData vpd = new PageData();  

    27.             vpd.put("var1", memberList.get(i).getString("memberID"));  

    28.             vpd.put("var2", memberList.get(i).getString("password"));  

    29.             vpd.put("var3", memberList.get(i).getString("rank"));  

    30.             vpd.put("var4", memberList.get(i).get("credit").toString());  

    31.             vpd.put("var5", memberList.get(i).getString("phone"));  

    32.             varList.add(vpd);  

    33.         }  

    34.         dataMap.put("varList", varList);  

    35.         ObjectExcelView erv = new ObjectExcelView();  

    36.         mv = new ModelAndView(erv,dataMap);  

    37.           

    38.         return mv;  

    39.     }  

    40.       

     

     

    转载请注明原文地址: https://ju.6miu.com/read-25897.html

    最新回复(0)