刚开始实习没有多久,现在公司有个需求:将数据库当中的数据以Excel表格的形式导出来,以前从来没有做过这样子的东西,自己也不会做,怎么办?然后就上网找了一些资料,看看别人写的博客,搞了几个小时,终于搞出来了,顿时心里就有一点小小的成就感,好开心!也顺便把数据导出Excel的过程记录一下,给一些有需要的人参考一下,也给自己以后积累一点经验。

这里我要说明一下:我公司采用的是Spring,Struts2,MyBatis三大框架的,而且我公司项目做完之后的信息展示页面有点复杂,为了方便讲解,我这里采用的是Spring MVC的框架,用一个很简单的例子来说明一下怎么将数据以Excel表的格式导出来而已,过程如下:

Controller层代码如下:

@Controller

public class ExportController{

@Autowired

private ExportService exportService;

@RequestMapping(value = "/export/excel")

public void exportExcel(HttpServletRequest request, HttpServletResponse response)

throws Exception {

//生成一个列表信息

List list = new ArrayList();

list.add(new Student(0001,"童年","22","男"));

list.add(new Student(0002,"光光","23","女"));

list.add(new Student(0003,"丁丁","21","男"));

XSSFWorkbook wb = exportService.export(list);

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-disposition", "attachment;filename=student.xlsx");

OutputStream ouputStream = response.getOutputStream();

wb.write(ouputStream);

ouputStream.flush();

ouputStream.close();

}

}

Service层代码如下:

@Service

public class ExportService {

//定义表头

String[] excelHeader = {"学号", "姓名", "年龄","性别"};

public XSSFWorkbook export(List list) {

//这里需要说明一个问题:如果是 Offices 2007以前的Excel版本,new的对象是:**HSSFWorkbook** ,Offices 2007以后的Excel版本new的对象才是XSSFWorkbook

XSSFWorkbook wb = new XSSFWorkbook();

//生成一个工作表

Sheet sheet = wb.createSheet("学生表");

//生成第一行

Row row = sheet.createRow((int) 0);

//生成单元格的样式style

XSSFCellStyle style = wb.createCellStyle();

style.setAlignment(CellStyle.ALIGN_CENTER);

for (int i = 0; i < excelHeader.length; i++) {

//获取每一个单元格

Cell cell = row.createCell(i);

//给单元格赋值

cell.setCellValue(excelHeader[i]);

//设置单元格的样式

cell.setCellStyle(style);

}

for (int i = 0; i < list.size(); i++) {

//得到当前行数的下一行(row.getRowNum():得到当前行数)

row = sheet.createRow(row.getRowNum() + 1);

Student student = list.get(i);

//赋值

row.createCell(0).setCellValue(student.getSno());

row.createCell(1).setCellValue(student.getName());

row.createCell(2).setCellValue(student.getAge());

row.createCell(3).setCellValue(student.getSex());

}

return wb;

}

}

前台JS代码:

function exportExcel(){

location.href="export/excel";

}

导出Excel

设置Excel表样式:

1. 生成一个XSSFCellStyle

XSSFCellStyle cellStyle = wb.createCellStyle();

####2. 设置样式

``` java

// 设置单元格的横向和纵向对齐方式,具体参数就不列了,参考HSSFCellStyle

cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);

cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//设置单元格的填充方式,以及前景颜色和背景颜色

//设置填充方式(填充图案)

cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);

//设置前景色

cellStyle.setFillForegroundColor(HSSFColor.RED.index);

//设置背景颜色

cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);

// 设置单元格底部的边框及其样式和颜色

cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);

cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);

3. 将样式应用于单元格,但有些样式只对单元格起作用

cell.setCellStyle(cellStyle);

4. 合并单元格:

//方面里面参数分别为:(起始行,结束行,起始列,结束列)

sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));

设置单元格字体样式:

1. 创建XSSFFont对象:

XSSFFont fontfontStyle = wb.createFont();

2. 设置字体样式:

//设置字体样式

fontStyle.setFontName("宋体");

//设置字体高度

fontStyle.setFontHeightInPoints((short)20);

//设置字体颜色

font.setColor(HSSFColor.BLUE.index);

//设置粗体

fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置斜体

font.setItalic(true);

//设置下划线

font.setUnderline(HSSFFont.U_SINGLE);

3. 将字体设置到单元格样式:

//字体也是单元格格式的一部分,所以也是属于CellStyle

// 将字体对象赋值给单元格样式对象

cellStyle.setFont(font);

// 将单元格样式应用于单元格

cell.setCellStyle(cellStyle);

java横向导出excel_JavaWeb POI 导出Excel相关推荐

  1. Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理)

    Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理) 最近公司需要我做一个导出Excel表格的功能,为此来学习一下POI,在这里记录一下学习笔记.B站直接搜BV1bJ411G ...

  2. excel导出java.lang.ArrayIndexOutOfBoundsException: 0 POI导出excel报错数组下标越界0

    好久没写博客了,最近是有点懒了... 最近项目遇到个问题,用poi导出excel,本地和测试服务器都没问题,线上所有的导出都不能用,排查过JKD版本和配置文件都没问题,百思不得其解,最终问了朋友考虑到 ...

  3. Java web项目利用POI导出EXCEL表格

    SSH2 POI导出EXCEL表格 1.首先导入poi的jar包 HSSFWorkbook :工作簿,代表一个excel的整个文档 HSSFSheet:工作表 HSSFRow :行 HSSFCell: ...

  4. java使用Jxl和Poi读写Excel

    使用Jxl和Poi需要使用到的jar包(由于我所在电脑的权限问题,不能直接给),可自行前往下载:jar下载 要用到的jar包(最好是全下了): 1.commons-io-2.2.jar 2.dom4j ...

  5. Java 中如何解决 POI 读写 excel 几万行数据时内存溢出的问题?(附源码)

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. Excel2003与Excel2007 两个版本 ...

  6. Java中使用HSSFWorkbook POI导出下载excel文件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单元格的合并 二.表格的生成和导出 1.后端代码 2.前端代码 总结 前言 提示:这里可以添加本文要记录的大概内容 ...

  7. excel文件下载下来损坏 js_使用Java / javascript和apache POI导出.xls文件时获取损坏的文件...

    我正在尝试从Web应用程序下载浏览器中的.xls文件.下面是相同的代码. try(FileInputStream inputStream = new FileInputStream("C:\ ...

  8. 复杂的POI导出Excel表格(多行表头、合并单元格)

    poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...

  9. java后台处理excel_java后台利用Apache poi 生成excel文档提供前台下载示例

    之前在项目中会用到在java在后台把数据填入Word文档的模板来提供前台下载,为了自己能随时查看当时的实现方案及方便他人学习我写了这篇博客,访问量已经是我写的博客里第一了.于是乎我在学会用Java在后 ...

最新文章

  1. 合理配置MySQL缓存 提高缓存命中率
  2. 计算机组成原理B1,计算机组成原理-本科生期末试卷B1.doc
  3. mongoose 批量修改字段_WordPress图片路径批量替换方法
  4. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
  5. 《长安十二时辰》火了!程序员版本过于真实!
  6. Boosting and AdaBoost
  7. 大数据架构师必读的NoSQL建模技术
  8. Python 爬虫抓站 记录
  9. android 动画停止播放,Android动画暂停和播放问题
  10. Hightopo 2D 入门
  11. 【英特尔杯】Python调取萤石网络摄像头视频
  12. PC 上安装Windows10系统到硬盘上ESP分区丢失,新建ESP分区修复引导ESP分区创建失败解决办法
  13. 正三角java_Java中的的画正三角方法
  14. 行通信比并行通信的速度更高
  15. selenium + bs4 +requests 爬取全国电动汽车充电站数据
  16. 面试中的65个技巧性回答---这简直就是全餐嘛
  17. html如何实现表情加文字发布,vue实现文字表情同时输入的方法
  18. 设备Kingston DataTraveler 3.0无法连接到理想的主机控制器。将尝试将该设备连接到可用的最佳主机控制器......
  19. 还有什么苦,是这届年轻人在理财中吃过的?
  20. c语言快餐店pos机计费系统,消费机,售饭机,食堂刷卡机,食堂收费机,餐饮收费POS机 -- 新开普(股票代码,300248)...

热门文章

  1. 类似苹果数据线的android,除了常见的安卓、苹果、Type-c,还有哪些你不知道的手机数据线?...
  2. 从估值、稀释和倍数的角度来看 Yuga labs 、Opensea 等明星 NFT 项目
  3. 我的世界基岩版红石教程(超简单)2
  4. 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
  5. 2021年1~12月语音合成和语音识别论文月报
  6. UOS x86安装Intel网卡驱动
  7. ubuntu怎么看服务器固态硬盘多大
  8. 中国电信短信指令代码表--天翼用户留着备用
  9. java生成excel甘特图
  10. oracle新书 罗敏_Oracle Acs资深顾问罗敏 老罗技术核心感悟:分表还是分区?