Java POI导出excel 指定名称分组折叠

java

package com.java.utils;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.ss.util.CellRangeAddress;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* excel 导出

*

* @author Admin

* @date 2020年5月20日

*/

@RestController

public class TestExcel {

@GetMapping(value = "/export", produces = "application/json; charset=utf-8")

public String createExcel(HttpServletResponse response) throws IOException {

// 创建HSSFWorkbook对象(excel的文档对象)

Workbook wb = new HSSFWorkbook();

// HSSFCellStyle style = this.getStyle(wb);

// 建立新的sheet对象(excel的表单)

Sheet sheet = wb.createSheet("成绩表");

// 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个

// HSSFRow row1 = sheet.createRow(0);

Row row1= sheet.createRow(0);

// 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个

Cell cell = row1.createCell(0);

// 设置单元格内容

cell.setCellValue("学员考试成绩一览表");

// cell.setCellStyle(style);

// 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列

sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));

// 在sheet里创建第二行

//HSSFRow row2 = sheet.createRow(1);

Row row2= sheet.createRow(1);

// 创建单元格并设置单元格内容

row2.createCell(0).setCellValue("姓名");

row2.createCell(1).setCellValue("班级");

row2.createCell(2).setCellValue("笔试成绩");

row2.createCell(3).setCellValue("机试成绩");

// row2.getCell(0).setCellStyle(style);

// row2.getCell(1).setCellStyle(style);

// row2.getCell(2).setCellStyle(style);

// row2.getCell(3).setCellStyle(style);

CellRangeAddress c = CellRangeAddress.valueOf("A2:D2");

sheet.setAutoFilter(c);

//c.formatAsString();

List<StudentInfo> stuList = new ArrayList<StudentInfo>();

StudentInfo stu1 = new StudentInfo();

stu1.setStuName("狗老齐");

stu1.setStuClass("5班");

stu1.setBishiResult("28");

stu1.setJishiResult("29");

stuList.add(stu1);

StudentInfo stu2 = new StudentInfo();

stu2.setStuName("靓仔");

stu2.setStuClass("5班");

stu2.setBishiResult("82");

stu2.setJishiResult("92");

stuList.add(stu2);

StudentInfo stu3 = new StudentInfo();

stu3.setStuName("阳仔");

stu3.setStuClass("8班");

stu3.setBishiResult("82");

stu3.setJishiResult("92");

stuList.add(stu3);

StudentInfo stu4 = new StudentInfo();

stu4.setStuName("1仔");

stu4.setStuClass("8班");

stu4.setBishiResult("82");

stu4.setJishiResult("92");

stuList.add(stu4);

StudentInfo stu5 = new StudentInfo();

stu5.setStuName("2仔");

stu5.setStuClass("8班");

stu5.setBishiResult("82");

stu5.setJishiResult("92");

stuList.add(stu5);

StudentInfo stu6 = new StudentInfo();

stu6.setStuName("3仔");

stu6.setStuClass("8班");

stu6.setBishiResult("82");

stu6.setJishiResult("92");

stuList.add(stu6);

int len=0;

for (int i = 0; i < stuList.size(); i++) {

StudentInfo stu = stuList.get(i);

Row row3 = sheet.createRow(2 + i);

row3.createCell(0).setCellValue(stu.getStuName());

row3.createCell(1).setCellValue(stu.getStuClass());

row3.createCell(2).setCellValue(stu.getBishiResult());

row3.createCell(3).setCellValue(stu.getJishiResult());

// row3.getCell(0).setCellStyle(style);

// row3.getCell(1).setCellStyle(style);

// row3.getCell(2).setCellStyle(style);

// row3.getCell(3).setCellStyle(style);

String stringCellValue = row3.getCell(0).getStringCellValue();

if("阳仔".equals(stringCellValue)){

len=i+2;

}

}

sheet.groupRow(2,len-1);

sheet.groupRow(len+1,stuList.size());

//sheet.getCellRange("A4:A5").groupByRows(true);

// 输出Excel文件

OutputStream output = response.getOutputStream();

response.reset();

response.setHeader("Content-disposition", "attachment; filename=test.xls");

response.setContentType("application/msexcel");

wb.write(output);

output.close();

return null;

}

}

转载于:https://blog.csdn.net/weixin_43840872/article/details/108280680

以上是 Java POI导出excel 指定名称分组折叠 的全部内容, 来源链接: utcz.com/z/390190.html

回到顶部