java poi导出excel2007_Java之Poi导出Excel文档

本文介绍了如何使用Java的POI库来导出Excel 2007(.xlsx)文档,包括创建工作簿、设置单元格样式、合并单元格以及通过Web接口提供下载的方法。示例代码展示了如何创建一个包含居中文本的表格,并提供了通过HttpServletResponse下载文件的示例。
摘要由CSDN通过智能技术生成

一、Poi简介

在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持。

二、Workbook/HSSFWorkbook/XSSFWorkbook

1) Workbook是Poi模型中的工作簿的概念,等同于Excel文档,我们的一切操作都基于这个工作簿。不过Workbook只是定义了一个接口,它有两个实现类: HSSFWorkbook/XSSFWorkbook。

2)HSSFWorkbook是Workbook的实现类,它生成的是.xls格式的文档(Excel '97(-2007))

3)XSSFWorkbook是Workbook的新的实现类,它生成的是.xlsx格式的文档(Excel 2007以后)

我们以下示例将使用HSSFWorkbook实现类,XSSFWorkbook类似

三、效果图

我们先看以下最后的效果图

4f278f54c5ef7806145260145d79cf1b.png

以上是Mac的numbers打开的样子,与window有所不同。

我们看到:

1)第一行,单元格数据(设置值);

2)单元格文本居中(设置样式);

3)第二行,单元格合并(合并操作);

四、代码示例

下面是实现代码,详细请看注解内容:

public static ListdataList;static{//数据准备

dataList = new ArrayList<>();

dataList.add("星期一");

dataList.add("星期二");

dataList.add("星期三");

dataList.add("星期四");

dataList.add("星期五");

dataList.add("星期六");

dataList.add("星期七");

}/*** 下载Excel文档

*@paramoutputStream*/

public voiddownloadExcel(OutputStream outputStream) {//创建工作簿

Workbook wb = newHSSFWorkbook();//创建样式

CellStyle style =wb.createCellStyle();//文本居中

style.setAlignment(HorizontalAlignment.CENTER);//创建工作表

Sheet sheet = wb.createSheet("sheet1");//合并单元格(开始行, 结束行, 开始列, 结束列)

sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, dataList.size() - 1));//创建首行

Row row = sheet.createRow(0);//创建首行各个列

for (int cellNum = 0; cellNum < dataList.size(); cellNum++) {

String cellValue=dataList.get(cellNum);//创建单元格

Cell cell =row.createCell(cellNum);//设置单元格的值

cell.setCellValue(cellValue);

cell.setCellStyle(style);

}try{//输出为文件

wb.write(outputStream);

}catch(IOException e) {

e.printStackTrace();

}finally{try{

wb.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

以上代码,传入一个OutputStream输出流,通过Workbook创建相关内容后,最后将workbook的内容写入输出流。

五、下载

如果你想通过web请求下载,那么可以将workbook写入response的输出流,例如:

@RequestMapping(value = "download")public voiddownloadExcel(HttpServletResponse response){try{

String fileName= String.valueOf(newDate().getTime());

fileName+= ".xls";//浏览器直接下载

response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));

response.setContentType("application/ynd.ms-excel;charset=UTF-8");

poiService.downloadExcel(response.getOutputStream());

}catch(IOException e) {

e.printStackTrace();

}

}

注意,这里设置了头:Content-Disposition:attachment...这里头信息,将使得浏览器直接将该内容做为文件直接下载。

前端JS代码可以简单这么写即可:

window.open("/download")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值