springboot 导出excel(一对多)

springboot 导出excel

格式如下:
ID 姓名 性别 年龄 地址 科目 分数
1 小红 23 成都青羊区 语文 98
数学 99
英语 100
2 小青 25 成都金牛区 语文 97
数学 98
英语 99
3 小明 24 成都武侯区

1、pom.xml 引入poi依赖


	
		org.apache.poi
		poi
		4.1.0
	
	
		org.apache.poi
		poi-ooxml
		4.1.0
	

2、controller 方法

/**
 * 导出excel
 * @param response
 * @throws IOException
 */
@RequestMapping("/ExcelDownload")
 public void excelDownload(HttpServletResponse response) throws IOException {
    //表头数据
    String[] header = {"ID", "姓名", "性别", "年龄", "地址",  "科目", "分数"};

    //数据内容
    String[] student1 = {"1", "小红", "女", "23", "成都青羊区"};
    String[] student2 = {"2", "小强", "男", "26", "成都金牛区"};
    String[] student3 = {"3", "小明", "男", "28", "成都武侯区"};
    List a=new ArrayList();
    a.add(student1);
    a.add(student2);
    a.add(student3);

    String[] course11={"语文","98"};
    String[] course12={"数学","99"};
    String[] course13={"英语","100"};
    List c1=new ArrayList<>();
    c1.add(course11);
    c1.add(course12);
    c1.add(course13);
    String[] course21={"语文","97"};
    String[] course22={"数学","98"};
    String[] course23={"英语","99"};
    List c2=new ArrayList<>();
    c2.add(course21);
    c2.add(course22);
    c2.add(course23);

    //声明一个工作簿
    HSSFWorkbook workbook = new HSSFWorkbook();

    //生成一个表格,设置表格名称为"学生表"
    HSSFSheet sheet = workbook.createSheet("学生表");

    //设置表格列宽度为10个字节
    sheet.setDefaultColumnWidth(10);

    //创建第一行表头
    HSSFRow headrow = sheet.createRow(0);

    //遍历添加表头(下面模拟遍历学生,也是同样的操作过程)
    for (int i = 0; i < header.length; i++) {
        //创建一个单元格
        HSSFCell cell = headrow.createCell(i);

        //创建一个内容对象
        HSSFRichTextString text = new HSSFRichTextString(header[i]);

        //将内容对象的文字内容写入到单元格中
        cell.setCellValue(text);
    }

    int l=0;
    //模拟遍历结果集,把内容加入表格
    for (int j=0; j
设置单元格列宽
//设置表格默认列宽为10个字节
//sheet.setDefaultColumnWidth(10);
//设置单列列宽:以一个字符的1/256的宽度作为一个单位
sheet.setColumnWidth(4,68*256);
sheet.setColumnWidth(1,20*256);
sheet.setColumnWidth(2,20*256);
中文文件名乱码
String fileName=sdf1.format(new Date())+"-学生信息";
//这后面可以设置导出Excel的名称
response.setHeader("Content-disposition", "attachment;filename="+ 
new String(fileName.getBytes("utf-8"),"ISO-8859-1" )+ ".xls");
合并单元格
//合并第一列的第3行到第5行 
CellRangeAddress region = new CellRangeAddress(3, // first row
                                           5, // last row
                                           1, // first column
                                           1 // last column
);
sheet.addMergedRegion(region);
步骤:
1. pom.xml中引入poi依赖
2. 声明一个工作簿
    HSSFWorkbook workbook = new HSSFWorkbook();
3. 生成一个表格,设置表格名称
    HSSFSheet sheet = workbook.createSheet("学员信息");
4. 创建行
    HSSFRow headrow = sheet.createRow(0);// 第一行 rownum从0开始
5. 创建单元格
    HSSFCell cell = headrow.createCell(i);// i为第几列
6. 创建内容对象
    HSSFRichTextString text = new HSSFRichTextString("测试内容");
7. 将内容对象的文字内容写入到单元格中
    cell.setCellValue(text);
8. 设置输出流

     response.setContentType("application/octet-stream");//八进制输出流
     response.setHeader("Content-disposition", "attachment;filename="+ new String(fileName.getBytes("utf-8"),"ISO-8859-1" )+ ".xls");//后面可以设置导出Excel的名称
9. 刷新缓冲
    response.flushBuffer();
10. workbook将Excel写入到response的输出流中,供页面下载
    workbook.write(response.getOutputStream());
参考网址:

https://blog.csdn.net/weixin_39448458/article/details/83013677
http://www.anyrt.com/blog/list/poiexcel.html

你可能感兴趣的:(java,springboot,poi,spring,boot,java)