文档章节

POI的简单使用

Williampwl
 Williampwl
发布于 2016/04/14 21:33
字数 534
阅读 17
收藏 0
点赞 1
评论 0
public class ServiceUtils {
 public static void exportExcel(ServletOutputStream outputStream, List<User> userList) {
  HSSFWorkbook workbook = null;
  try {
   //创建workbook
   workbook = new HSSFWorkbook();
   //创建sheet
   HSSFSheet sheet = workbook.createSheet("用户列表");
   //创建第1行
   HSSFRow headRow = sheet.createRow(0);
   //创建第1行单元格
   HSSFCell headCell = headRow.createCell(0);
   headCell.setCellValue("用户列表");
   //合并第1行单元格
   sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
   //设置第1行单元格字体和格式
   HSSFFont headFont = workbook.createFont();
   headFont.setFontHeightInPoints((short) 16);
   headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
   headFont.setFontName("宋体");
   HSSFCellStyle cellStyle = workbook.createCellStyle();
   cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
   cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
   cellStyle.setFont(headFont);
   headCell.setCellStyle(cellStyle);
   
   String[] titles = {"用户名", "账号", "所属部门", "性别", "手机号码", "电子邮箱", "生日"};
   //创建第2行
   HSSFRow secondRow = sheet.createRow(1);
   //创建第2行的字体和格式
   HSSFFont secondRowFont = workbook.createFont();
   secondRowFont.setFontName("宋体");
   secondRowFont.setFontHeightInPoints((short) 13);//13号字体
   secondRowFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
   HSSFCellStyle secondRowCellStyle = workbook.createCellStyle();
   secondRowCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
   secondRowCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
   secondRowCellStyle.setFont(secondRowFont);
   //为第2行每个单元格赋值
   for(int i = 0; i < titles.length; i ++) {
    //创建第2行单元格
    HSSFCell secondRowCell = secondRow.createCell(i);
    secondRowCell.setCellValue(titles[i]);
    //设置第2行单元格字体和格式
    secondRowCell.setCellStyle(secondRowCellStyle);
    sheet.autoSizeColumn(i);//自动匹配单元格长度
   }
   
   //创建第3行及以后的字体和格式
   HSSFFont iFont = workbook.createFont();
   iFont.setFontName("宋体");
   iFont.setFontHeightInPoints((short) 11);//11号字体
   HSSFCellStyle iCellStyle = workbook.createCellStyle();
   iCellStyle.setFont(iFont);
   //动态生成第3行及以后的内容
   for(int i = 0; i < userList.size(); i ++) {
    //创建第i行
    HSSFRow iRow = sheet.createRow(i + 2);
    User user = userList.get(i);
    String[] values = {
         user.getUserName(), user.getAccount(),
         user.getDept(), user.getGender(), user.getPhone(), 
         user.getEmail(), new SimpleDateFormat("yyyy-MM-dd").format(user.getBirthday())
         };
    //创建第i行第j单元格
    for(int j = 0; j < values.length; j ++) {
     HSSFCell iCell = iRow.createCell(j);
     iCell.setCellValue(values[j]);
     iCell.setCellStyle(iCellStyle);
     sheet.autoSizeColumn(j);
    }
   }
   workbook.write(outputStream);
  } catch (Exception e) {
   throw new RuntimeException(e);
  } finally {
   if(workbook != null) {
    try {
     workbook.close();
    } catch (Exception e) {
     throw new RuntimeException(e);
    }
   }
  }
  
 }
}

这上面的代码写在工具类中,上层调用的时候只需要设置好response的头和将response.getOutputStream传进来,那么就可以实现浏览器导出excel表格。

浏览器头的设置、

HttpServletResponse response= ServletActionContext.getResponse();
   //设置MIME类型
   response.setContentType("application/x-excel");
   //设置处理方式,注意,此时设置的03版本的excel
   response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("用户列表.xls", "UTF-8"));
   //在service层处理文件
   userService.exportExcel(response.getOutputStream());

还要注意判断从数据库导出的list集合是否为空。

© 著作权归作者所有

共有 人打赏支持
Williampwl
粉丝 0
博文 13
码字总数 5808
作品 0
广州
【译】使用 Webpack 和 Poi 构建更好的 JavaScript 应用

译者注:最近看到 Poi 这个也是打着零配置特点(Parcel:莫名躺枪?)的 JavaScript 打包工具,发现其在 Github 有着 3000+ Star 的同时在中文世界里热度却较低,因此在 Medium 上找了一篇文...

逆葵
07/12
0
0
JAVA使用POI操作excel

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用...

王小明123
2013/01/09
0
12
JavaScript与Excel灵活交互制作Web报表

【IT168 技术】Web报表的开发是一个比较常见的功能,然而在B/S构件上实现这些功能并没有在C/S构架上那些简单,针对这样的问题,本篇文章提供相应的解决方案,在下面的内容中将介绍JS与Excel...

天极网
2012/03/01
0
0
使用 Apache POI 和 OpenOffice API 在 Linux 中统计 Office 文档的页数

简介: 在实际的项目开发中经常会遇到需要在不同的操作系统平台上统计 Microsoft Office 系列文档页数的要求。Apache POI 提供了一套完整的用于访问微软格式文档的 Java API。但是 Apache P...

IBMdW
2012/10/26
1K
0
Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者...

文文1
2015/12/02
914
0
Android下 可以使用 apache的poi包么?

前提:现有一个windows环境下开发的(类似于一个为第三方服务性的jar) 项目,想要移植到Android平台上 问题:现在这个项目中有用到poi相关的包,想知道poi包可以直接在Android下使用么?如果不...

yjyvsdream
2014/03/12
628
1
Java程序员的日常—— POI与JDBC、Mockmvc与单元测试

周日没怎么休息好,周一一天都迷迷糊糊的,不过还算是干了不少的活。 总结一下,大致有以下几点内容: 1 使用poi以及mysql jdbc实现了一个复杂excel的导入 2 基于工程原有的代码,书写sprin...

青夜之衫
2017/12/05
0
0
使用 Apache POI 处理 Microsoft Office 文档

原文同步至:http://www.waylau.com/apache-poi-handle-microsoft-documents/ POI 概述 Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准...

waylau
2015/02/01
0
0
Android下 可以使用 apache的poi包么?

@邓凡平 你好,想跟你请教个问题: 前提:现有一个windows环境下开发的(类似于一个为第三方服务性的jar) 项目,想要移植到Android平台上 问题:现在这个项目中有用到poi相关的包,想知道poi...

yjyvsdream
2014/03/14
193
0
java读写excel之POI篇—001

POI 简单介绍 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML...

Mysoft
2015/09/21
56
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
22分钟前
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
39分钟前
4
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
56分钟前
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0
There is no session with id[xxx]

参考网页 https://blog.csdn.net/caimengyuan/article/details/52526765 报错 2018-07-19 23:04:35,330 [http-nio-1008-exec-8] DEBUG [org.apache.shiro.web.servlet.SimpleCookie] - Found......

karma123
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部