• spring mvc poi excel


    Java代码  收藏代码
    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. }  
  • 相关阅读:
    [No0000CA]什么是“普瑞马法则”?以及 如何利用“普瑞马法则”,三步克服惰性
    [No0000B9]C# 类型基础 值类型和引用类型 及其 对象复制 浅度复制vs深度复制 深入研究2
    [No0000B8]WPF或Winform调用系统Console控制台显示信息
    [No0000B7]If else 与 三元表达式? : 效率对比
    [No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1
    [No0000B4].Net中String是引用类型还是值类型,答string是特殊的引用类型
    [No0000B6]C#中 ==与equals的区别
    [No0000B3].NET C# 单体模式(Singleton)
    [No0000AF]去除wpf窗口标题栏ICON
    [No000090]C#捕获控制台(console)关闭事件及响应cmd快捷键
  • 原文地址:https://www.cnblogs.com/likeju/p/4732401.html
Copyright © 2020-2023  润新知