Java之Poi导出Excel文档

摘要:
2) HSSFWorkbook是Workbook的实现类,它在中生成文档。xls格式。3) XSSFWorkbook是Workbook的新实现类,它以xlsx格式生成For文档,我们将在以下示例中使用HSSFWorkbook实现类。XSSFWorkbook类似于3。让我们看看下面的最终渲染。以上是Mac数字的打开,与窗口不同。

一、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类似

三、效果图

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

Java之Poi导出Excel文档第1张

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

我们看到:

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

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

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

四、代码示例

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

public static List<String> dataList;

    static {
        // 数据准备
        dataList = new ArrayList<>();
        dataList.add("星期一");
        dataList.add("星期二");
        dataList.add("星期三");
        dataList.add("星期四");
        dataList.add("星期五");
        dataList.add("星期六");
        dataList.add("星期七");
    }

    /**
     * 下载Excel文档
     * @param outputStream
     */
    public void downloadExcel(OutputStream outputStream) {
        // 创建工作簿
        Workbook wb = new HSSFWorkbook();
        // 创建样式
        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 void downloadExcel(HttpServletResponse response){
        try {
            String fileName = String.valueOf(new Date().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")

具体内容可以参考官网文档:https://poi.apache.org/spreadsheet/quick-guide.html

免责声明:文章转载自《Java之Poi导出Excel文档》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysq优化三之buffer pool用Docker实现nginx多端口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

编辑datagridview单元格

以这3种为例,最简单的是第三种,直接让单元格处于可编辑状态,当完成编辑后触发CellEndEdit事件,最后对输入的数据进行处理。 1 private DateTimePicker dtp = new DateTimePicker(); 2 private ComBox sellstyle = new ComBox ();//设置全局变量 View C...

Java调用第三方接口示范

在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 使用流程【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】: package com.njsc.credit.util;imp...

Java调用Http/Https接口(8,end)OkHttp调用Http/Https接口

OkHttp是一个高效的HTTP客户端,在Android中用的比较多,也可以用在Java中;本文主要介绍OkHttp在java中的使用,文中所使用到的软件版本:Java 1.8.0_191、SpringBoot2.2.1.RELEASE。 1、OkHttp特点 a、支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接b、连接池减少请求延...

JAVA poi设置单元格背景颜色

import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.user...

行,列,单元格颜色设定

在ALV的开发过程中经常需要给行,列,单元格设置不同的颜色,用来帮助用户区分一些意外或重要的信息,比如某些物料缺少库存,某订单的状态是未清之类的。本文就着重介绍如何给SALV设置颜色。 颜色设定的有以下三种: 1,单元格颜色 为特定的单元格设置颜色,这需要在ALV输出内表中添加一个专门保存颜色的字段,类型为lvc_t_scol,设置完颜色后(包括列名字,...

vue2.0之axios使用详解

axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 功能特性 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 http请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 自动转换 JSON 数据 客户端支持保护安全免受 XSRF 攻击 浏览器...