• springboot+vue 导出excel


    package com.tianwen.springcloud.microservice.base.util;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletResponse;
    
    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.xssf.streaming.SXSSFWorkbook;
    
    import com.tianwen.springcloud.microservice.base.dto.course.CourseExcelDTO;
     
    public class CourseExcelUtil 
    {
        /**
         * 课程导出类
         * @param response 响应
         * @param fileName 文件名
         * @param columnList 每列的标题名
         * @param dataList 导出的数据
         */
        public static void exportCourseExcel(HttpServletResponse response, 
                String fileName,
                List<CourseExcelDTO> dataList)
        {
            List<String> columnList = new ArrayList<String>();
            columnList.add("课程名称");
            columnList.add("主讲人");
            columnList.add("查看权限");
            columnList.add("课程方式");
            columnList.add("课程分类");
            columnList.add("提交人");
            columnList.add("参与人数");
            columnList.add("浏览次数");
            columnList.add("课时数");
            columnList.add("课时总时长");
    
            //声明输出流
            OutputStream os = null;
            //设置响应头
            setResponseHeader(response,fileName);
            try 
            {
                //获取输出流
                os = response.getOutputStream();
                //内存中保留5000条数据,以免内存溢出,其余写入硬盘
                SXSSFWorkbook wb = new SXSSFWorkbook(5000);
                //获取该工作区的第一个sheet
                Sheet sheet1 = wb.createSheet("sheet1");
                int excelRow = 0;
                //创建标题行
                Row titleRow = sheet1.createRow(excelRow++);
                for(int i = 0;i<columnList.size();i++)
                {
                    //创建该行下的每一列,并写入标题数据
                    Cell cell = titleRow.createCell(i);
                    cell.setCellValue(columnList.get(i));
                }
                //设置内容行
                if(dataList != null && dataList.size() > 0)
                {
                    //外层for循环创建行
                    for(int i = 0;i<dataList.size();i++)
                    {
                        Row dataRow = sheet1.createRow(excelRow++);
                        //内层for循环创建每行对应的列,并赋值
                        CourseExcelDTO courseObj = dataList.get(i);
                        for(int j = 0; j < columnList.size(); j++)
                        {
                            Cell cell = dataRow.createCell(j);
                            if(j == 0)
                            {
                                cell.setCellValue(courseObj.getCourseName());
                            }
                            else if(j == 1)
                            {
                                cell.setCellValue(courseObj.getTeachernames());
                            }
                            else if(j == 2)
                            {
                                cell.setCellValue(courseObj.getViewRole());
                            }
                            else if(j == 3)
                            {
                                cell.setCellValue(courseObj.getLessonType());
                            }
                            else if(j == 4)
                            {
                                cell.setCellValue(courseObj.getCourseTypeName());
                            }
                            else if(j == 5)
                            {
                                cell.setCellValue(courseObj.getCreateUserName());
                            }
                            else if(j == 6)
                            {
                                cell.setCellValue(courseObj.getJoins());
                            }
                            else if(j == 7)
                            {
                                cell.setCellValue(courseObj.getViews());
                            }
                            else if(j == 8)
                            {
                                cell.setCellValue(courseObj.getLessons());
                            }
                            else if(j == 9)
                            {
                                cell.setCellValue(courseObj.getCourseLessonTotalTime());
                            }
                        }
                    }
                }
                
                response.setHeader("Content-disposition", "attachment;fileName=" + fileName + ".xls");
                response.setContentType("application/octet-stream;charset=utf-8");
                //将整理好的excel数据写入流中
                wb.write(os);
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            finally 
            {
                try 
                {
                    // 关闭输出流
                    if (os != null) 
                    {
                        os.flush();
                        os.close();
                    }
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }
     
        /*
            设置浏览器下载响应头
         */
        private static void setResponseHeader(HttpServletResponse response, String fileName) 
        {
            try 
            {
                try 
                {
                    fileName = new String(fileName.getBytes(),"ISO8859-1");
                } 
                catch (UnsupportedEncodingException e)
                {
                    e.printStackTrace();
                }
                response.setContentType("application/octet-stream;charset=UTF-8");
                response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
                response.addHeader("Pargam", "no-cache");
                response.addHeader("Cache-Control", "no-cache");
            } 
            catch (Exception ex) 
            {
                ex.printStackTrace();
            }
        }
    }
    vm.$axios
            .post(this.$app.jhEduUrl + '/course/exportCourseList', param, { responseType: 'blob' })
            .then((resp) => {
              if (!resp) {
                console.log('下载数据返回空')
                return
              }
              const link = document.createElement('a');
              let blob = new Blob([resp.data], {type: 'application/vnd.ms-excel'});
              link.style.display = 'none';
              link.href = URL.createObjectURL(blob);
    
              link.setAttribute('download', '课程列表信息' + '.xls');
              document.body.appendChild(link);
              link.click();
              document.body.removeChild(link);
            })
    

      

  • 相关阅读:
    spark基础(1)
    Homebrew的使用教程,镜像源的推荐,安装软件的方法
    Scala Trait(特征)
    P5308 [COCI2019] Quiz
    Vjudge contest 425291
    Vjudge contest 424925
    AT3558 Modern Painting
    Vjudge contest 425061
    Vjudge contest 423849
    Codeforces Round 704
  • 原文地址:https://www.cnblogs.com/scode2/p/16263091.html
Copyright © 2020-2023  润新知