java中poi实现Excel导出

第一步:引入所需依赖

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.16</version>
</dependency>

第二步:构建数据(模拟)代码如下

package com.mongo.controller;
import com.mongo.entity.Meals;
import org.apache.poi.hssf.usermodel.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: songgt
 * @date: 2018-07-11 8:52
 */
@RestController
@RequestMapping(path = "/test")
public class TestController {
    @GetMapping(path = "/export")
    public void export(HttpServletResponse response) throws Exception{
        //构建数据
        List<Meals> mealsList = new ArrayList<>();
        Meals meals = new Meals();
        meals.setTcqd("0001");
        meals.setTcbm("000254");
        meals.setWxbs("asdfadxoiwnhFSAK");
        meals.setYhdd("FDSDFK00125");
        meals.setSjxm("liumin");
        meals.setSjdz("shengtangdasha");
        meals.setLxfs("12398432498");
        meals.setSjjg("6541");
        meals.setSjlx("ddddddd");
        meals.setSbkh("555555");

        Meals meals1 = new Meals();
        meals1.setTcqd("0002");
        meals1.setTcbm("0002232323");
        meals1.setWxbs("asdfadxoiwnhFSAK");
        meals1.setYhdd("FDSDFK00125");
        meals1.setSjxm("liumin");
        meals1.setSjdz("shengtangdasha");
        meals1.setLxfs("12398432498");
        meals1.setSjjg("6541");
        meals1.setSjlx("啊啊啊啊啊啊啊啊啊啊啊啊啊");
        meals1.setSbkh("666666666666");
        mealsList.add(meals);
        mealsList.add(meals1);

        //Excel表头
        String []title = {"套餐渠道","套餐编码","微信标识","用户订单","收件姓名","收件地址","联系方式","收件价格","收件类型","设备卡号"};
        //sheet名
        String sheetName = "套餐信息";
        String fileName = new String("套餐信息列表".getBytes(),"ISO-8859-1");

        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet(sheetName);
        HSSFRow row = sheet.createRow(0);
        //这里用了两次独立的for循环,我觉得这样思路更清晰,你也可以用嵌套循环
        for (int i=0;i<title.length;i++){
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(title[i]);
            //列宽自适应好像不生效
            sheet.autoSizeColumn(i);
            //解决了列头自适应
            sheet.setColumnWidth(i,title[i].getBytes().length*256);
        }
        for (int i=0;i<mealsList.size();i++){
            row = sheet.createRow(i+1);
            Meals m = mealsList.get(i);
            row.createCell(0).setCellValue(m.getTcqd());
            row.createCell(1).setCellValue(m.getTcbm());
            row.createCell(2).setCellValue(m.getWxbs());
            row.createCell(3).setCellValue(m.getYhdd());
            row.createCell(4).setCellValue(m.getSjxm());
            row.createCell(5).setCellValue(m.getSjdz());
            row.createCell(6).setCellValue(m.getLxfs());
            row.createCell(7).setCellValue(m.getSjjg());
            row.createCell(8).setCellValue(m.getSjlx());
            row.createCell(9).setCellValue(m.getSbkh());
        }
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;charset=UTF-8;filename="+fileName+".xls");
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        outputStream.flush();
        outputStream.close();
    }
}

第三步:访问测试http://localhost:8888/test/export
访问下载如下

image.png

文件打开
image.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,281评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,220评论 2 89
  • 精心收集整理的教程笔记 第01天 Java基础入门 第1章计算机基础 1.1计算机 计算机(computer)俗称...
    Java帮帮阅读 11,227评论 1 109
  • 这几天,整个微信世界都在盼雪。 民谚道:霜前冷、雪后寒。可人们还是满怀热情地盼雪降临。 自2008年至今刚好十周年...
    火星人7610阅读 3,161评论 1 2
  • 一句话概述 所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、...
    zhangxiao阅读 1,562评论 0 0

友情链接更多精彩内容