excel de exportación de springboot (uno a muchos)

excel de exportación de springboot

El formato es el siguiente:
CARNÉ DE IDENTIDAD Nombre género años habla a tema fracción
1 Xiao Hong Hembra 23 Distrito de Chengdu Qingyang Idioma 98
matemáticas 99
Inglés 100
2 Xiaoqing Hembra 25 Distrito de Chengdu Jinniu Idioma 97
matemáticas 98
Inglés 99
3 Komei masculino 24 Distrito de Chengdu Wuhou

1. Pom.xml introduce la dependencia de poi

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

2. Método del controlador

/**
 * 导出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<String[]> a=new ArrayList();
    a.add(student1);
    a.add(student2);
    a.add(student3);

    String[] course11={"语文","98"};
    String[] course12={"数学","99"};
    String[] course13={"英语","100"};
    List<String[]> c1=new ArrayList<>();
    c1.add(course11);
    c1.add(course12);
    c1.add(course13);
    String[] course21={"语文","97"};
    String[] course22={"数学","98"};
    String[] course23={"英语","99"};
    List<String[]> 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<a.size();j++){
        l=l+1;
        HSSFRow row1 = sheet.createRow(l);
        String[] aaa=a.get(j);
        for (int i = 0; i < aaa.length; i++) {
            HSSFCell cell = row1.createCell(i);
            HSSFRichTextString text = new HSSFRichTextString(aaa[i]);
            cell.setCellValue(text);
        }
        if(j==0){
            for (int n=0;n<c1.size();n++){

                if(n != 0){
                    row1 = sheet.createRow(l+n);
                }
                for (int s=0;s<c1.get(n).length;s++){
                    HSSFCell celll1 = row1.createCell(aaa.length+s);
                    HSSFRichTextString textl1 = new HSSFRichTextString(c1.get(n)[s]);
                    celll1.setCellValue(textl1);
                }
            }
            l=l+c1.size()-1;
        }
        if(j==1){
            for (int n=0;n<c2.size();n++){
                if(n != 0){
                    row1 = sheet.createRow(l+n);
                }
                for (int s=0;s<c2.get(n).length;s++){
                    HSSFCell celll1 = row1.createCell(aaa.length+s);
                    HSSFRichTextString textl1 = new HSSFRichTextString(c2.get(n)[s]);
                    celll1.setCellValue(textl1);
                }
            }
            l=l+c2.size()-1;
        }
    }
    //准备将Excel的输出流通过response输出到页面下载
    //八进制输出流
    response.setContentType("application/octet-stream");

    //这后面可以设置导出Excel的名称,此例中名为student.xls
    response.setHeader("Content-disposition", "attachment;filename=student.xls");

    //刷新缓冲
    response.flushBuffer();

    //workbook将Excel写入到response的输出流中,供页面下载
    workbook.write(response.getOutputStream());
}
Establecer el ancho de la columna de la celda
//设置表格默认列宽为10个字节
//sheet.setDefaultColumnWidth(10);
//设置单列列宽:以一个字符的1/256的宽度作为一个单位
sheet.setColumnWidth(4,68*256);
sheet.setColumnWidth(1,20*256);
sheet.setColumnWidth(2,20*256);
El nombre del archivo chino está distorsionado
String fileName=sdf1.format(new Date())+"-学生信息";
//这后面可以设置导出Excel的名称
response.setHeader("Content-disposition", "attachment;filename="+ 
new String(fileName.getBytes("utf-8"),"ISO-8859-1" )+ ".xls");
Combinar células
//合并第一列的第3行到第5行 
CellRangeAddress region = new CellRangeAddress(3, // first row
                                           5, // last row
                                           1, // first column
                                           1 // last column
);
sheet.addMergedRegion(region);
paso:
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());
URL de referencia:

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

Supongo que te gusta

Origin blog.csdn.net/qq_28288835/article/details/109021134
Recomendado
Clasificación