//生成Excel文件  直接上传服务器//生成excelXSSFWorkbook workbook = new XSSFWorkbook();//sheet页名XSSFSheet sheet = workbook.createSheet("Sheet1");XSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//文件头String[] tableHeaders = {"字段1\t","字段2\t","字段3\t","字段4\t","字段5\t",};XSSFRow row = sheet.createRow(0);// 创建表头for (int i = 0; i < tableHeaders.length; i++) {XSSFCell cell = row.createCell(i);cell.setCellValue(tableHeaders[i]);cell.setCellStyle(cellStyle);}int index = 0;//页面传入list    list参数对应实体Dtofor (Dto dto : list) {++index;row = sheet.createRow(index);row.createCell(0).setCellValue(dto.get字段1());row.createCell(1).setCellValue(dto.get字段2());row.createCell(2).setCellValue(dto.get字段3());row.createCell(3).setCellValue(dto.get字段4());row.createCell(4).setCellValue(dto.get字段5());}//将生成excel转换成字节流try {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();workbook.write(byteArrayOutputStream);byte[] bytes = byteArrayOutputStream.toByteArray();InputStream byteIn = new ByteArrayInputStream(bytes);//将流转换为file文件String s = ioToBase64(byteIn);MultipartFile multipartFile = base64ToMultipart(s);//      String originalFilename = multipartFile.getOriginalFilename();//上传路径//Resource路径下//      String baseUrl = ResourceUtils.getURL("classpath:").getPath() + "excel/";//  C盘指定路径分项目存放String baseUrl = "C:\\excel\\"+项目名;System.out.println(baseUrl);String today = new SimpleDateFormat("yyyyMMdd").format(new Date());String time = new SimpleDateFormat("HHmmss").format(new Date());File path = new File(baseUrl);if (!path.isDirectory()) {path.mkdirs();}//上传文件名String originalFilename =projectName+"意图标注"+ today+ time +".xlsx";//上传文件File filePath = new File(path + File.separator + originalFilename);multipartFile.transferTo(filePath);//代码中调用的方法  将excel转化为流
public static String ioToBase64(InputStream in) throws IOException {String strBase64 = null;try {//in.available()//返回文件的字节长度byte[] bytes = new byte[in.available()];in.read(bytes);// 将文件中的内容读入到数组中strBase64 = new BASE64Encoder().encode(bytes);   //将字节流数组转换为字符串in.close();} catch (IOException e) {e.printStackTrace();}return strBase64;}public static MultipartFile base64ToMultipart(String base64) {try {BASE64Decoder decoder = new BASE64Decoder();byte[] b = decoder.decodeBuffer(base64);for (int i = 0; i < b.length; ++i) {if (b[i] < 0) {b[i] += 256;}}return new BASE64DecodedMultipartFile(b, base64);} catch (Exception e) {e.printStackTrace();return null;}}private static class BASE64DecodedMultipartFile implements MultipartFile {private final byte[] imgContent;private final String header;public BASE64DecodedMultipartFile(byte[] imgContent, String header) {this.imgContent = imgContent;this.header = header.split(";")[0];}@Overridepublic String getName() {// TODO - implementation depends on your requirementsreturn System.currentTimeMillis() + Math.random() + "." + header.split("/")[1];}@Overridepublic String getOriginalFilename() {// TODO - implementation depends on your requirementsreturn System.currentTimeMillis() + (int) Math.random() * 10000 + "." + header.split("/")[1];}@Overridepublic String getContentType() {// TODO - implementation depends on your requirementsreturn header.split(":")[1];}@Overridepublic boolean isEmpty() {return imgContent == null || imgContent.length == 0;}@Overridepublic long getSize() {return imgContent.length;}@Overridepublic byte[] getBytes() throws IOException {return imgContent;}@Overridepublic InputStream getInputStream() throws IOException {return new ByteArrayInputStream(imgContent);}@Overridepublic void transferTo(File dest) throws IOException, IllegalStateException {new FileOutputStream(dest).write(imgContent);}}/----------Excel文件下载String baseUrl  = null;boolean fileBoolean  = true;String fileName = vo.getFileName();ResponseObject responseObject = new ResponseObject();
//        //根据路径查询文件
//        try {
//             baseUrl = ResourceUtils.getURL("classpath:").getPath() + "excel/";
//            path是指欲下载的文件夹的路径。
//            File file = new File(baseUrl);
//          判断文件夹存在
//            if (file.exists()) {
//                File[] files = file.listFiles();
//              判断文件不为空  遍历文件名称查找文件
//                    if (files != null) {
//                    for (File childFile : files) {
//                        System.out.println(childFile.getName());
//                      对比文件名
//                        if (childFile.getName().equals(fileName)) {
//                            fileBoolean=false;
//                        }
//                    }
//                }
//            }
//        } catch (IOException ex) {
//            ex.printStackTrace();
//            responseObject.setMassage("文件查找失败");
//            responseObject.setStatus(0);
//            return responseObject;
//        }
//        //判断文件是否存在在服务器
//        if(fileBoolean){
//            responseObject.setMassage("文件不存在,请重新选择");
//            responseObject.setStatus(0);
//            return responseObject;
//        }
//        baseUrl = ResourceUtils.getURL("classpath:").getPath() + "excel/";String  projectName=fileName.substring(0,fileName.indexOf("意图"));baseUrl = "C:\\excel\\"+projectName;//将文件转换为EXCELFileInputStream fis = null;XSSFWorkbook wb = null;//文件输入流File f = new File(baseUrl+File.separator + fileName);//使用XSSFWorkbook对象读取excel文件try {fis = new FileInputStream(f);wb = new XSSFWorkbook(fis);fis.close();} catch (Exception e) {e.printStackTrace();responseObject.setMassage("数据文件读取失败");responseObject.setStatus(0);return responseObject;}response.reset();//设置contentType为vnd.ms-excelresponse.setContentType("application/vnd.ms-excel;charset=utf-8");response.setCharacterEncoding("utf-8");// Content-disposition属性设置成以附件方式进行下载response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Content-disposition", "attachment;filename="+fileName);OutputStream os = null;try {os = response.getOutputStream();wb.write(os);os.flush();os.close();} catch (IOException e) {e.printStackTrace();responseObject.setMassage("文件下载失败");responseObject.setStatus(0);return responseObject;}return ResponseObject.responseSeccess();}

生成Excel直接上传服务器+下载相关推荐

  1. PGP安装,生成密钥及上传服务器的完整步骤

    PGP安装,生成密钥及上传服务器的完整步骤(windows版) 1. 下载gpg4win:https://files.gpg4win.org/gpg4win-3.1.3.exe 安装后用图形界面生成密 ...

  2. 基于FTP协议的Excel文件上传与下载

    1.关于FTP协议 FTP(文件传输协议)是TCP/IP协议组中的协议之一,作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP协议的全称为File Transfer Protocol, ...

  3. java 下载excel xlsx_JAVA Excel.xlsx 上传于下载

    1.文件下载 // 下载文件名 String systemDate = DateUtil.getDate(DateUtil.FORMAT_DATETIME); String fileName = &q ...

  4. EXCEL文件上传与下载

    *----------------------- 上传 Example 1 ---------------------------------- 假设有数据在excel中如下:  sname      ...

  5. Excel文件上传、下载(Hutool)

    简单粗暴上代码 Excel下载 我们先定义一个嵌套的List,List的元素也是一个List,内层的一个List代表一行数据,每行都有4个单元格,最终list对象代表多行数据. List<Str ...

  6. 在服务器端生成Excel文件然后从服务器下载的本地的代码

    这个方法适用所有类型文件,你可以适当修改代码就行了 protected void Button1_Click(object sender, EventArgs e)         {         ...

  7. 关于纯前端excel上传、下载功能

    工作项目中,表格的上传下载基本都是调取后端接口,把处理逻辑放在后端进行处理.那么纯前端js代码实现excel的上传下载是否可行?其实代码逻辑很简单,不过需要引用xlsx.js进行处理.下面是我自己写的 ...

  8. 使用poi实现excel的上传下载

    文章目录 前言 一.poi是什么? 二.使用步骤 1.引入依赖 2.导出excel 3.导入excel 总结 前言 excel的上传下载是常见的需求,这里记录一下使用poi实现Excel的上传和下载 ...

  9. 如何高效的在服务器和本地进行上传和下载文件

    昨天, 师弟告诉我可以在xshell中使用sz进行下载, 想要上传的话用rz就行了. 然后我竟然没有听过. 学习最好的方法就是写一篇博客, 比如这篇. 1. 从putty到xshell 最开始, 是使 ...

最新文章

  1. RT-Thread GCC VSCode等开源工具链 在智能小车制作中的应用
  2. 可重入锁ReentrantLock--转载
  3. 私有云的优缺点_2019年中国云计算行业竞争格局与发展趋势分析「图」
  4. 网上商城—管理员修改商品
  5. bean注入属性_摆脱困境:将属性值注入配置Bean
  6. js img转换base64
  7. DeepWalk: Online Learning of Social Representations-1
  8. js基础知识学习(二)
  9. 亲密关系沟通-【匹配度】调整沟通模式
  10. JDBC秒变C3P0连接池——再加连接解耦
  11. java linux root权限管理_Linux--开启root用户并允许管理员登录
  12. 论Spring开发框架
  13. Apache Wicket 1.5发布
  14. 大神级ppt作品欣赏_中班美术课件星空PPT课件教案图片音乐
  15. 【学术 | 比赛】比赛?论文?先收藏!29个学术网站,比赛论文不再困难
  16. WireShark基本使用(5)第 5 章 文件输入/输出及打印
  17. JavaScript系列之条件运算符
  18. 【Cesium】加载互联网地图服务——高德地图
  19. 齐鲁工业大学计算机科学与技术学院院长,齐鲁工业大学计算机科学与技术学院导师教师师资介绍简介-翟翌...
  20. 测试开发成长学习路线--如何做一个DevOps流水线上的开发测试

热门文章

  1. Tnsping 和TCP/IP 中的ping 的区別
  2. 生成式大语言模型微调训练快速手册
  3. 注册有限责任公司的详细流程
  4. containerd导入本地镜像
  5. 【数据库】服务器复制文件或文件夹时出错 未指定的错误
  6. 【2020】13 年终总结
  7. hdu 3999(二叉排序树)
  8. android 自定义listview控件,一个简单又完整的自定义ListView
  9. Arduino的多任务管理
  10. “双减”政策下的小学英语作业设计