美文网首页
java中poi实现Excel导出

java中poi实现Excel导出

作者: 小宋_ed76 | 来源:发表于2018-08-15 10:52 被阅读8次

第一步:引入所需依赖

<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

相关文章

网友评论

      本文标题:java中poi实现Excel导出

      本文链接:https://www.haomeiwen.com/subject/ervibftx.html