poi导出

poi导出功能

效果如下:
在这里插入图片描述

1.引入依赖

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

2.代码

package com.glm.web.controller.job.test;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.*;

public class FjFlowTest {
    public static void main(String[] args) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

            //-----模拟的数据-------
            JSONArray array = new JSONArray();
            for (int i = 0; i < 2; i++) {
                JSONObject jsonObject = new JSONObject();
                Date date = new Date();
                String format = sdf.format(date);
                jsonObject.put("gmtCreate", format);
                jsonObject.put("flow99", 1 + i);
                jsonObject.put("flow139", 22);
                jsonObject.put("flow150", 5);
                jsonObject.put("fail", 2);
                jsonObject.put("successRate", 35 + "%");
                jsonObject.put("avgDealTime", 45 + i);
                array.add(jsonObject);
            }
            //列头
            LinkedHashMap<String, String> headers = new LinkedHashMap<>();
            headers.put("gmtCreate", "时间");
            headers.put("flow99", "99元流量包");
            headers.put("flow139", "139元流量包");
            headers.put("flow150", "150元流量包");
            headers.put("fail", "失败");
            headers.put("successRate", "成功率");
            headers.put("avgDealTime", "平均受理时长");
            //excel保存的路径
            String path = "C:\\Users\\Leon\\Desktop";
            //1.创建工作簿
            Workbook workbook = new XSSFWorkbook();
            //水平居中和垂直居中
            CellStyle style = workbook.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
            //背景色
            style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
            style.setFillPattern(CellStyle.SOLID_FOREGROUND);
            //2.创建表名
            Sheet sheet = workbook.createSheet("流量包统计2021年");
            sheet.setDefaultColumnWidth(15);//设置列宽
            CellRangeAddress region = new CellRangeAddress(0, 0, 0, 6);//合并单元格,(将第1行到第1行的,第1个格子到第7个格子合并)
            sheet.addMergedRegion(region);
            //3.创建行
            Row row0 = sheet.createRow(0);
            //4.创建单元格
            Cell cell = row0.createCell(0);
            //5.写入数据
            cell.setCellValue("流量包统计2021年");

            Row row1 = sheet.createRow(1);
            Iterator<Map.Entry<String, String>> iterator = headers.entrySet().iterator();
            int firstColumnNum = 0;
            while (iterator.hasNext()){
                Map.Entry<String, String> next = iterator.next();
                String value = next.getValue();
                Cell cell1 = row1.createCell(firstColumnNum);
                cell1.setCellValue(value);
                firstColumnNum++;
            }
            cell.setCellStyle(style);
            for (int i = 0; i < array.size(); i++) {
                Row row = sheet.createRow(i + 2);
                Object o = array.get(i);
                JSONObject jsonObj = (JSONObject) o;
                Set<String> keySet = jsonObj.keySet();
                for (int j=0;j<keySet.size();j++){
                    row.createCell(j);
                }
                for (String key : keySet) {
                    Object o1 =  jsonObj.get(key);
                    Cell cell1 = null;
                    if("gmtCreate".equals(key)){
                        cell1 = row.getCell(0);
                    }else if("flow99".equals(key)){
                        cell1 = row.getCell(1);
                    }else if("flow139".equals(key)){
                        cell1 = row.getCell(2);
                    }else if("flow150".equals(key)){
                        cell1 = row.getCell(3);
                    }else if("fail".equals(key)){
                        cell1 = row.getCell(4);
                    }else if("successRate".equals(key)){
                        cell1 = row.getCell(5);
                    }else if("avgDealTime".equals(key)){
                        cell1 = row.getCell(6);
                    }else{
                        continue;
                    }
                    cell1.setCellValue(o1+"");

                }
            }
            //6.创建流用于输出
            FileOutputStream fileOutputStream = new FileOutputStream(path + "\\流量包统计2021年.xlsx");
            //7.输出
            workbook.write(fileOutputStream);
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiweilong123456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值