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

spring mvc poi excel的更多相关文章

  1. spring mvc 导出 excel

    // js 触发导出 excel 方法 导出当前页的数据 含有条件查询的结果 // js 框架使用的 是 easyui function doExport(){ var optins = $(&quo ...

  2. spring mvc的excel报表文件下载时流的冲突解决

    在jsp或者在servlet中有时要用到 response.getOutputStream(),但是此时会在后台报这个错误java.lang.IllegalStateException: getOut ...

  3. Spring MVC 实现Excel的导入导出功能(1:Excel的导入)

    简介 这篇文章主要记录自己学习上传和导出Excel时的一些心得,企业办公系统的开发中,经常会收到这样的需求:批量录入数据.数据报表使用 Excel 打开,或者职能部门同事要打印 Excel 文件,而他 ...

  4. Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)

    Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...

  5. spring mvc项目中导出excel表格简单实现

    查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...

  6. Spring MVC 实例:Excel视图的使用

    对于Excel而言,Spring MVC所推荐的是使用AbstractXlsView,它实现了视图接口,从其命名也可以知道它只是一个抽象类,不能生成实例对象.它自己定义了一个抽象方法——buildEx ...

  7. 基于Spring Mvc实现的Excel文件上传下载

    最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...

  8. Spring MVC 学习总结(三)——请求处理方法Action详解

    Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理方法可以有多个不同的参数,以及一个多种类型的返回结果. 一.Action参数类型 如果 ...

  9. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

随机推荐

  1. hibernate基础配置文件

    主配置文件 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC " ...

  2. thinkphp5升级版开源框架tpframe v2.1发布

    免费开源框架tpframe是一款以thinkphp5为驱动,在此基础上进行进一步的完善与改进的框架,保持了ThinkPHP5原有的所有特性,优化核心,减少依赖,为个人或企业建站提供高效.快速解决的方案 ...

  3. 框架基础:关于ajax设计方案(三)---集成ajax上传技术

    之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的l ...

  4. 【POJ - 3190 】Stall Reservations(贪心+优先队列)

    Stall Reservations 原文是English,这里直接上中文吧 Descriptions: 这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于 ...

  5. (十)SpringBoot的文件上传

    一:添加commons-fileupload依赖 打开pom文件添加 <dependency> <groupId>commons-fileupload</groupId& ...

  6. zabbix 安装小结

    其实很简单的东西,结果折腾了好久.首先去官网 下个source,然后按照文档来 https://www.zabbix.com/documentation/3.2/manual/installation ...

  7. uva 6910 - Cutting Tree 并查集的删边操作,逆序

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  8. jQuery选择器之子元素选择器

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  9. 【学习笔记】深入理解js原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...

  10. Load average in Linux的精确含义

    Man 上的解释: load average System load averages is the average number of processes that are either in a ...