zoukankan      html  css  js  c++  java
  • SpringMvc 使用poi导入导出Excel

      1 Util类  
      2 package com.common.util;  
      3   
      4 public class ExportUtil  
      5 {  
      6     private XSSFWorkbook wb = null;  
      7   
      8     private XSSFSheet sheet = null;  
      9   
     10     /** 
     11      * @param wb 
     12      * @param sheet 
     13      */  
     14     public ExportUtil(XSSFWorkbook wb, XSSFSheet sheet)  
     15     {  
     16         this.wb = wb;  
     17         this.sheet = sheet;  
     18     }  
     19   
     20     /** 
     21      * 合并单元格后给合并后的单元格加边框 
     22      *  
     23      * @param region 
     24      * @param cs 
     25      */  
     26     public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs)  
     27     {  
     28   
     29         int toprowNum = region.getFirstRow();  
     30         for (int i = toprowNum; i <= region.getLastRow(); i++)  
     31         {  
     32             XSSFRow row = sheet.getRow(i);  
     33             for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++)  
     34             {  
     35                 XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row,  
     36                                                 // (short) j);  
     37                 cell.setCellStyle(cs);  
     38             }  
     39         }  
     40     }  
     41   
     42     /** 
     43      * 设置表头的单元格样式 
     44      *  
     45      * @return 
     46      */  
     47     public XSSFCellStyle getHeadStyle()  
     48     {  
     49         // 创建单元格样式  
     50         XSSFCellStyle cellStyle = wb.createCellStyle();  
     51         // 设置单元格的背景颜色为淡蓝色  
     52         cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);  
     53         cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);  
     54         // 设置单元格居中对齐  
     55         cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);  
     56         // 设置单元格垂直居中对齐  
     57         cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);  
     58         // 创建单元格内容显示不下时自动换行  
     59         cellStyle.setWrapText(true);  
     60         // 设置单元格字体样式  
     61         XSSFFont font = wb.createFont();  
     62         // 设置字体加粗  
     63         font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);  
     64         font.setFontName("宋体");  
     65         font.setFontHeight((short) 200);  
     66         cellStyle.setFont(font);  
     67         // 设置单元格边框为细线条  
     68         cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);  
     69         cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);  
     70         cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);  
     71         cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);  
     72         return cellStyle;  
     73     }  
     74   
     75     /** 
     76      * 设置表体的单元格样式 
     77      *  
     78      * @return 
     79      */  
     80     public XSSFCellStyle getBodyStyle()  
     81     {  
     82         // 创建单元格样式  
     83         XSSFCellStyle cellStyle = wb.createCellStyle();  
     84         // 设置单元格居中对齐  
     85         cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);  
     86         // 设置单元格垂直居中对齐  
     87         cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);  
     88         // 创建单元格内容显示不下时自动换行  
     89         cellStyle.setWrapText(true);  
     90         // 设置单元格字体样式  
     91         XSSFFont font = wb.createFont();  
     92         // 设置字体加粗  
     93         font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);  
     94         font.setFontName("宋体");  
     95         font.setFontHeight((short) 200);  
     96         cellStyle.setFont(font);  
     97         // 设置单元格边框为细线条  
     98         cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);  
     99         cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);  
    100         cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);  
    101         cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);  
    102         return cellStyle;  
    103     }  
    104 }  
    105 service类  
    106 public interface ITestExportExcelService  
    107 {  
    108     public void exportExcel(String hql,String [] titles,ServletOutputStream outputStream);  
    109 }  
    110 @Service  
    111 public class TestExportExcelServiceImpl implements ITestExportExcelService  
    112 {  
    113     @Resource  
    114     private ITestExportExcelDao dao;  
    115       
    116     public void exportExcel(String hql, String[] titles, ServletOutputStream outputStream)  
    117     {  
    118         List<Goods> list = dao.exportExcel(hql);  
    119         // 创建一个workbook 对应一个excel应用文件  
    120         XSSFWorkbook workBook = new XSSFWorkbook();  
    121         // 在workbook中添加一个sheet,对应Excel文件中的sheet  
    122         XSSFSheet sheet = workBook.createSheet("导出excel例子");  
    123         ExportUtil exportUtil = new ExportUtil(workBook, sheet);  
    124         XSSFCellStyle headStyle = exportUtil.getHeadStyle();  
    125         XSSFCellStyle bodyStyle = exportUtil.getBodyStyle();  
    126         // 构建表头  
    127         XSSFRow headRow = sheet.createRow(0);  
    128         XSSFCell cell = null;  
    129         for (int i = 0; i < titles.length; i++)  
    130         {  
    131             cell = headRow.createCell(i);  
    132             cell.setCellStyle(headStyle);  
    133             cell.setCellValue(titles[i]);  
    134         }  
    135         // 构建表体数据  
    136         if (list != null && list.size() > 0)  
    137         {  
    138             for (int j = 0; j < list.size(); j++)  
    139             {  
    140                 XSSFRow bodyRow = sheet.createRow(j + 1);  
    141                 Goods goods = list.get(j);  
    142   
    143                 cell = bodyRow.createCell(0);  
    144                 cell.setCellStyle(bodyStyle);  
    145                 cell.setCellValue(goods.getGoodsName());  
    146   
    147                 cell = bodyRow.createCell(1);  
    148                 cell.setCellStyle(bodyStyle);  
    149                 cell.setCellValue(goods.getGoodsCost());  
    150   
    151                 cell = bodyRow.createCell(2);  
    152                 cell.setCellStyle(bodyStyle);  
    153                 cell.setCellValue(goods.getGoodsUnit());  
    154             }  
    155         }  
    156         try  
    157         {  
    158             workBook.write(outputStream);  
    159             outputStream.flush();  
    160             outputStream.close();  
    161         }  
    162         catch (IOException e)  
    163         {  
    164             e.printStackTrace();  
    165         }  
    166         finally  
    167         {  
    168             try  
    169             {  
    170                 outputStream.close();  
    171             }  
    172             catch (IOException e)  
    173             {  
    174                 e.printStackTrace();  
    175             }  
    176         }  
    177   
    178     }  
    179   
    180 }  
    181 dao类  
    182 public interface ITestExportExcelDao  
    183 {  
    184     public List<Goods> exportExcel(String hql);  
    185 }  
    186 @Repository  
    187 public class TestExportExcelDaoImpl implements ITestExportExcelDao  
    188 {  
    189     @Resource  
    190     private SessionFactory factory;  
    191       
    192     /** 
    193      * 以goods表为例导出测试 
    194      */  
    195     @SuppressWarnings("unchecked")  
    196     public List<Goods> exportExcel(String hql)  
    197     {  
    198         Session session = factory.getCurrentSession();  
    199         List<Goods> list = session.createQuery(hql).list();  
    200         return list;  
    201     }  
    202   
    203 }  
    204 控制层Controller  
    205 @Controller  
    206 @RequestMapping("/testexportexcel/*")  
    207 public class TestExportExcelController  
    208 {  
    209     @Resource  
    210     private ITestExportExcelService service;  
    211   
    212     @RequestMapping  
    213     public String exportExcel(HttpServletResponse response)  
    214     {  
    215         response.setContentType("application/binary;charset=ISO8859_1");  
    216         try  
    217         {  
    218             ServletOutputStream outputStream = response.getOutputStream();  
    219             String fileName = new String(("导出excel例子").getBytes(), "ISO8859_1");  
    220             response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");// 组装附件名称和格式  
    221             String hql = "from Goods";  
    222             String[] titles = { "商品名", "商品单价", "商品单位" };  
    223             service.exportExcel(hql, titles, outputStream);  
    224         }  
    225         catch (IOException e)  
    226         {  
    227             e.printStackTrace();  
    228         }  
    229         return null;  
    230     }  
    231   
    232     @RequestMapping  
    233     public String upload(HttpServletRequest request, HttpServletResponse response)  
    234     {  
    235         MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;  
    236         MultipartFile file = mulRequest.getFile("excel");  
    237         String filename = file.getOriginalFilename();  
    238         if (filename == null || "".equals(filename))  
    239         {  
    240             return null;  
    241         }  
    242         try  
    243         {  
    244             InputStream input = file.getInputStream();  
    245             XSSFWorkbook workBook = new XSSFWorkbook(input);  
    246             XSSFSheet sheet = workBook.getSheetAt(0);  
    247             if (sheet != null)  
    248             {  
    249                 for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++)  
    250                 {  
    251                     XSSFRow row = sheet.getRow(i);  
    252                     for (int j = 0; j < row.getPhysicalNumberOfCells(); j++)  
    253                     {  
    254                         XSSFCell cell = row.getCell(j);  
    255                         String cellStr = cell.toString();  
    256                         System.out.print("【"+cellStr+"】 ");  
    257                     }  
    258                     System.out.println();  
    259                 }  
    260   
    261             }  
    262         }  
    263         catch (Exception e)  
    264         {  
    265             e.printStackTrace();  
    266         }  
    267         return "/test/uploadExcel.jsp";  
    268     }  
    269   
    270 }  

    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
    </dependency>

  • 相关阅读:
    PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
    PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
    PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)
    PAT (Advanced Level) Practice 1035 Password (20 分)
    PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) (进制转换,回文数)
    PAT (Advanced Level) Practice 1120 Friend Numbers (20 分) (set)
    从零开始吧
    Python GUI编程(TKinter)(简易计算器)
    PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)
    PAT (Advanced Level) Practice 1152 Google Recruitment (20 分)
  • 原文地址:https://www.cnblogs.com/zuge/p/5784019.html
Copyright © 2011-2022 走看看