spring mvc poi excel
- Util类
- package com.common.util;
- public class ExportUtil
- {
- private XSSFWorkbook wb = null;
- private XSSFSheet sheet = null;
- /**
- * @param wb
- * @param sheet
- */
- public ExportUtil(XSSFWorkbook wb, XSSFSheet sheet)
- {
- this.wb = wb;
- this.sheet = sheet;
- }
- /**
- * 合并单元格后给合并后的单元格加边框
- *
- * @param region
- * @param cs
- */
- public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs)
- {
- int toprowNum = region.getFirstRow();
- for (int i = toprowNum; i <= region.getLastRow(); i++)
- {
- XSSFRow row = sheet.getRow(i);
- for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++)
- {
- XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row,
- // (short) j);
- cell.setCellStyle(cs);
- }
- }
- }
- /**
- * 设置表头的单元格样式
- *
- * @return
- */
- public XSSFCellStyle getHeadStyle()
- {
- // 创建单元格样式
- XSSFCellStyle cellStyle = wb.createCellStyle();
- // 设置单元格的背景颜色为淡蓝色
- cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
- cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
- // 设置单元格居中对齐
- cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
- // 设置单元格垂直居中对齐
- cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
- // 创建单元格内容显示不下时自动换行
- cellStyle.setWrapText(true);
- // 设置单元格字体样式
- XSSFFont font = wb.createFont();
- // 设置字体加粗
- font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
- font.setFontName("宋体");
- font.setFontHeight((short) 200);
- cellStyle.setFont(font);
- // 设置单元格边框为细线条
- cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
- return cellStyle;
- }
- /**
- * 设置表体的单元格样式
- *
- * @return
- */
- public XSSFCellStyle getBodyStyle()
- {
- // 创建单元格样式
- XSSFCellStyle cellStyle = wb.createCellStyle();
- // 设置单元格居中对齐
- cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
- // 设置单元格垂直居中对齐
- cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
- // 创建单元格内容显示不下时自动换行
- cellStyle.setWrapText(true);
- // 设置单元格字体样式
- XSSFFont font = wb.createFont();
- // 设置字体加粗
- font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
- font.setFontName("宋体");
- font.setFontHeight((short) 200);
- cellStyle.setFont(font);
- // 设置单元格边框为细线条
- cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
- cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
- return cellStyle;
- }
- }
- service类
- public interface ITestExportExcelService
- {
- public void exportExcel(String hql,String [] titles,ServletOutputStream outputStream);
- }
- @Service
- public class TestExportExcelServiceImpl implements ITestExportExcelService
- {
- @Resource
- private ITestExportExcelDao dao;
- public void exportExcel(String hql, String[] titles, ServletOutputStream outputStream)
- {
- List<Goods> list = dao.exportExcel(hql);
- // 创建一个workbook 对应一个excel应用文件
- XSSFWorkbook workBook = new XSSFWorkbook();
- // 在workbook中添加一个sheet,对应Excel文件中的sheet
- XSSFSheet sheet = workBook.createSheet("导出excel例子");
- ExportUtil exportUtil = new ExportUtil(workBook, sheet);
- XSSFCellStyle headStyle = exportUtil.getHeadStyle();
- XSSFCellStyle bodyStyle = exportUtil.getBodyStyle();
- // 构建表头
- XSSFRow headRow = sheet.createRow(0);
- XSSFCell cell = null;
- for (int i = 0; i < titles.length; i++)
- {
- cell = headRow.createCell(i);
- cell.setCellStyle(headStyle);
- cell.setCellValue(titles[i]);
- }
- // 构建表体数据
- if (list != null && list.size() > 0)
- {
- for (int j = 0; j < list.size(); j++)
- {
- XSSFRow bodyRow = sheet.createRow(j + 1);
- Goods goods = list.get(j);
- cell = bodyRow.createCell(0);
- cell.setCellStyle(bodyStyle);
- cell.setCellValue(goods.getGoodsName());
- cell = bodyRow.createCell(1);
- cell.setCellStyle(bodyStyle);
- cell.setCellValue(goods.getGoodsCost());
- cell = bodyRow.createCell(2);
- cell.setCellStyle(bodyStyle);
- cell.setCellValue(goods.getGoodsUnit());
- }
- }
- try
- {
- workBook.write(outputStream);
- outputStream.flush();
- outputStream.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- try
- {
- outputStream.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- dao类
- public interface ITestExportExcelDao
- {
- public List<Goods> exportExcel(String hql);
- }
- @Repository
- public class TestExportExcelDaoImpl implements ITestExportExcelDao
- {
- @Resource
- private SessionFactory factory;
- /**
- * 以goods表为例导出测试
- */
- @SuppressWarnings("unchecked")
- public List<Goods> exportExcel(String hql)
- {
- Session session = factory.getCurrentSession();
- List<Goods> list = session.createQuery(hql).list();
- return list;
- }
- }
- 控制层Controller
- @Controller
- @RequestMapping("/testexportexcel/*")
- public class TestExportExcelController
- {
- @Resource
- private ITestExportExcelService service;
- @RequestMapping
- public String exportExcel(HttpServletResponse response)
- {
- response.setContentType("application/binary;charset=ISO8859_1");
- try
- {
- ServletOutputStream outputStream = response.getOutputStream();
- String fileName = new String(("导出excel例子").getBytes(), "ISO8859_1");
- response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");// 组装附件名称和格式
- String hql = "from Goods";
- String[] titles = { "商品名", "商品单价", "商品单位" };
- service.exportExcel(hql, titles, outputStream);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return null;
- }
- @RequestMapping
- public String upload(HttpServletRequest request, HttpServletResponse response)
- {
- MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;
- MultipartFile file = mulRequest.getFile("excel");
- String filename = file.getOriginalFilename();
- if (filename == null || "".equals(filename))
- {
- return null;
- }
- try
- {
- InputStream input = file.getInputStream();
- XSSFWorkbook workBook = new XSSFWorkbook(input);
- XSSFSheet sheet = workBook.getSheetAt(0);
- if (sheet != null)
- {
- for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++)
- {
- XSSFRow row = sheet.getRow(i);
- for (int j = 0; j < row.getPhysicalNumberOfCells(); j++)
- {
- XSSFCell cell = row.getCell(j);
- String cellStr = cell.toString();
- System.out.print("【"+cellStr+"】 ");
- }
- System.out.println();
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return "/test/uploadExcel.jsp";
- }
- }
spring mvc poi excel的更多相关文章
- spring mvc 导出 excel
// js 触发导出 excel 方法 导出当前页的数据 含有条件查询的结果 // js 框架使用的 是 easyui function doExport(){ var optins = $(&quo ...
- spring mvc的excel报表文件下载时流的冲突解决
在jsp或者在servlet中有时要用到 response.getOutputStream(),但是此时会在后台报这个错误java.lang.IllegalStateException: getOut ...
- Spring MVC 实现Excel的导入导出功能(1:Excel的导入)
简介 这篇文章主要记录自己学习上传和导出Excel时的一些心得,企业办公系统的开发中,经常会收到这样的需求:批量录入数据.数据报表使用 Excel 打开,或者职能部门同事要打印 Excel 文件,而他 ...
- Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)
Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...
- spring mvc项目中导出excel表格简单实现
查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...
- Spring MVC 实例:Excel视图的使用
对于Excel而言,Spring MVC所推荐的是使用AbstractXlsView,它实现了视图接口,从其命名也可以知道它只是一个抽象类,不能生成实例对象.它自己定义了一个抽象方法——buildEx ...
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...
- Spring MVC 学习总结(三)——请求处理方法Action详解
Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理方法可以有多个不同的参数,以及一个多种类型的返回结果. 一.Action参数类型 如果 ...
- EasyUI + Spring MVC + hibernate实现增删改查导入导出
(这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...
随机推荐
- java形式参数分别是基本类型和引用类型的调用
什么是形式参数,基本类型,引用类型? 形式参数(形参)百度百科里的解释是:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数. 通俗的说就是:形式参数是指在函数名后面的小括号里 ...
- css里关于浏览器的前缀
今天遇到一个比较坑爹的 -moz-box-sizing: border-box; box-sizing' border-box; 一下子有点懵逼,第一个什么鬼??一查,原来是火狐浏览器的前缀.应该 ...
- 洛谷 - P5000 - Hillwer编码 - 高精度
https://www.luogu.org/problemnew/show/P5000 第一次写一个正经的高精度题. 很明显ASCII码的乘积绝对是溢出的. 那么直接上Java.正好学一手Java的字 ...
- 笔记:JavaScript闭包
闭包 闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰.直观的说就是形成一个不销毁的栈环境. 对于闭包,当外部函数返回之后,内部函数依然可以访问外部函数的变量 ...
- NOIp 2015信息传递【tarjan/拓扑/并查集】
一道好的NOIp题目,在赛场上总能用许多算法A掉.比如这道和关押罪犯. 题目传送门 法一:tarjan在有向图中跑最小环 有人从别人口中得知自己信息,等效于出现了一个环.于是 这就变成了一个有向图ta ...
- 一起学Android之Activity
概述 本文以一个简单的小例子,简述Android开发中Activity的相关知识,仅供学习分享使用. 什么是Activity? Activity是一个应用程序组件,通常显示为一个页面,用户可以通过Ac ...
- codeforces 615 B. Longtail Hedgehog (DFS + 剪枝)
题目链接: codeforces 615 B. Longtail Hedgehog (DFS + 剪枝) 题目描述: 给定n个点m条无向边的图,设一条节点递增的链末尾节点为u,链上点的个数为P,则该链 ...
- Travelling HDU - 3001
Travelling HDU - 3001 方法:3进制状态压缩dp(更好的方法是预处理出每个状态数字对应的y数组,然后用刷表,时间复杂度可以少一个n) #include<cstdio> ...
- 线段树(单点更新) HDOJ 4288 Coder
题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...
- 二分查找 BestCoder Round #36 ($) Gunner
题目传送门 /* 题意:问值为x的个数有几个,第二次查询就是0 lower/upper_bound ()函数的使用,map也可过,hash方法不会 */ #include <cstdio> ...