Java 手写,导出Excel文件

1.Controller

    @SneakyThrows
    @PostMapping("/daoExcel")
    public void daoExcel(@RequestBody List<Entity> entityList, HttpServletResponse response, HttpServletRequest request) {
        try {
            entityService.getDaoExcel(entityList, response, request);
        }catch (Exception e) {
            e.printStackTrace();
        }

    }

2.Service

@SneakyThrows
    void getDaoExcel(List<Entity> entityList, HttpServletResponse response, HttpServletRequest request) ;

3.Impl

 @SneakyThrows
    @Override
    public void getList3(List<Entity> entity1List, HttpServletResponse response, HttpServletRequest request) {
       
		//用于标记是否有输出数据
        int outFlag=0;
		//文件名
        String fileName=null;
		//参数
        String remark=null;
        int v_chk=0;

       // try {
        /**
         * 勾选页面数据总数
         */
        for (int i = 0; i <entity1List.size(); i++) {
            Entity entity1=entity1List.get(i); 
            Date date = new Date();
			SimpleDateFormat ft = new SimpleDateFormat("YYYYMMddHHmmss");//24小时制时间
			String format = ft.format(date);
			//创建文件夹
			String MAINFILENAME = "C:/TEMP/模板_"+format+"/";
			File file1 = new File(MAINFILENAME);
			if (file1.mkdir()) {
				System.out.println("创建文件目录:" + file1.getPath() + "成功!");
			}
            //写模板文件
            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet("模板_"+entity1List.get(i).getID());
            //设置列宽度
            sheet.setColumnWidth(0,8800);
            sheet.setColumnWidth(1,4855);
            sheet.setColumnWidth(2,4855);
            sheet.setColumnWidth(3,2428);
            //样式
            CellStyle style = workbook.createCellStyle();
            CellStyle style1 = workbook.createCellStyle();
            CellStyle style2 = workbook.createCellStyle();//加格式线
            //局中对其
            style1.setAlignment(HorizontalAlignment.CENTER);//增加水平居中样式
            style1.setVerticalAlignment(VerticalAlignment.CENTER);//增加垂直居中样式
            //自动换行样式增加
            style1.setWrapText(true);
            //excle边框样式添加
            style1.setBorderBottom(BorderStyle.THIN);//设置单元
            style1.setBorderLeft(BorderStyle.THIN);
            style1.setBorderRight(BorderStyle.THIN);
            style1.setBorderTop(BorderStyle.THIN);
            //excle边框样式添加
            style2.setBorderBottom(BorderStyle.THIN);//设置单元
            style2.setBorderLeft(BorderStyle.THIN);
            style2.setBorderRight(BorderStyle.THIN);
            style2.setBorderTop(BorderStyle.THIN);
            /*⾏设置了字体后,excel中所有的⾏的字体样式都发⽣了改变 */
            XSSFFont font = workbook.createFont();
            font.setFontName("宋体");//字体
            font.setFontHeight(22);//字体大小
            font.setBold(true);//字体是否加粗
            style.setFont(font);
            XSSFFont font1 = workbook.createFont();
            font1.setFontName("宋体");//字体
            font1.setFontHeight(10);//字体大小
            font1.setBold(true);//字体是否加粗
            style1.setFont(font1);
            //第一行 标题头部
            XSSFRow zRow = sheet.createRow(0);
            zRow.setHeight((short) 540);//设置行高
            XSSFCell zCell = zRow.createCell(0);
            zCell.setCellStyle(style);
            //第二行
            XSSFRow zRow1 = sheet.createRow(1);
            zRow1.setHeight((short) 375);//设置行高
            XSSFCell zCell1 = zRow1.createCell(0);//第2行第一个
            XSSFCell zCell2 = zRow1.createCell(1);//第2行第二个
            zCell1.setCellValue("ID编号:");
            XSSFCell zCell3 = zRow1.createCell(8);//第2行第9个
            XSSFCell zCell4 = zRow1.createCell(9);//第2行第10个
            zCell3.setCellValue("时间:");
            
            //第六行
            XSSFRow aRow1 = sheet.createRow(5);
            aRow1.setHeight((short) 480);//设置行高
            XSSFCell aCell = aRow1.createCell(0);//第6行第1个
            XSSFCell aCell1 = aRow1.createCell(1);//第6行第2个
            XSSFCell aCell2 = aRow1.createCell(2);//第6行第3个
            XSSFCell aCell3 = aRow1.createCell(3);//第6行第4个
            aCell.setCellValue("名字1");
            aCell.setCellStyle(style1);
            aCell1.setCellValue("名字2");
            aCell1.setCellStyle(style1);
            aCell2.setCellValue("名字3");
            aCell2.setCellStyle(style1);
            aCell3.setCellValue("名字4");
            aCell3.setCellStyle(style1);
			
            //打印EXCEL
            if (entity1.getID().indexOf('W')!=-1 || entity1.getID().indexOf('S')!=-1){
                List<Entity2> list2 = entity1Mapper.getList2(entity1.getID());
                for (int j = 0; j <list2.size() ; j++) {
                    Entity2 entity2 = list2.get(j);
                    //取首字母
                    String str= String.valueOf(entity2.getID().charAt(0));
                    if (str.equals("W") || str.equals("S")){
                        outFlag=1;
                       
                        //文件名
                        if (fileName==null){
                            //文件名
                            fileName=MAINFILENAME+"模板_"+entity2.getID()+ ".xlsx";
                            //第一行 标题头部
                            zCell.setCellValue("模板标题");
                            //第二行
                            zCell2.setCellValue(entity2.getID());
                            zCell4.setCellValue(format);
                           
                        }
                        
                        //第七行到N行
                        XSSFRow contentRow  = sheet.createRow(6+j);//创建一行
                        contentRow.setHeight((short) 375);//设置行高
                        XSSFCell contentCell = contentRow.createCell(0);//第6+j行第1个
                        XSSFCell contentCell1 = contentRow.createCell(1);//第6+j行第2个
                        XSSFCell contentCell2 = contentRow.createCell(2);//第6+j行第3个
                        XSSFCell contentCell3 = contentRow.createCell(3);//第6+j行第4个
                        contentCell.setCellValue(entity2.getName1());
                        contentCell.setCellStyle(style2);
                        contentCell1.setCellValue(entity2.getName2());
                        contentCell1.setCellStyle(style2);
                        contentCell2.setCellValue(entity2.getName3());
                        contentCell2.setCellStyle(style2);
                        contentCell3.setCellValue(entity2.getName4());
                        contentCell3.setCellStyle(style2);
                    }

                }
                if(outFlag==1){
                    response.setCharacterEncoding("UTF-8");
                    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
                    workbook.write(response.getOutputStream());
                    fileName=null;
                    outFlag=0;
                }
            }// end
        }

    }   

效果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

摘星_goddess

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

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

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

打赏作者

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

抵扣说明:

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

余额充值