生成Excel直接上传服务器+下载
//生成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直接上传服务器+下载相关推荐
- PGP安装,生成密钥及上传服务器的完整步骤
PGP安装,生成密钥及上传服务器的完整步骤(windows版) 1. 下载gpg4win:https://files.gpg4win.org/gpg4win-3.1.3.exe 安装后用图形界面生成密 ...
- 基于FTP协议的Excel文件上传与下载
1.关于FTP协议 FTP(文件传输协议)是TCP/IP协议组中的协议之一,作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP协议的全称为File Transfer Protocol, ...
- java 下载excel xlsx_JAVA Excel.xlsx 上传于下载
1.文件下载 // 下载文件名 String systemDate = DateUtil.getDate(DateUtil.FORMAT_DATETIME); String fileName = &q ...
- EXCEL文件上传与下载
*----------------------- 上传 Example 1 ---------------------------------- 假设有数据在excel中如下: sname ...
- Excel文件上传、下载(Hutool)
简单粗暴上代码 Excel下载 我们先定义一个嵌套的List,List的元素也是一个List,内层的一个List代表一行数据,每行都有4个单元格,最终list对象代表多行数据. List<Str ...
- 在服务器端生成Excel文件然后从服务器下载的本地的代码
这个方法适用所有类型文件,你可以适当修改代码就行了 protected void Button1_Click(object sender, EventArgs e) { ...
- 关于纯前端excel上传、下载功能
工作项目中,表格的上传下载基本都是调取后端接口,把处理逻辑放在后端进行处理.那么纯前端js代码实现excel的上传下载是否可行?其实代码逻辑很简单,不过需要引用xlsx.js进行处理.下面是我自己写的 ...
- 使用poi实现excel的上传下载
文章目录 前言 一.poi是什么? 二.使用步骤 1.引入依赖 2.导出excel 3.导入excel 总结 前言 excel的上传下载是常见的需求,这里记录一下使用poi实现Excel的上传和下载 ...
- 如何高效的在服务器和本地进行上传和下载文件
昨天, 师弟告诉我可以在xshell中使用sz进行下载, 想要上传的话用rz就行了. 然后我竟然没有听过. 学习最好的方法就是写一篇博客, 比如这篇. 1. 从putty到xshell 最开始, 是使 ...
最新文章
- RT-Thread GCC VSCode等开源工具链 在智能小车制作中的应用
- 可重入锁ReentrantLock--转载
- 私有云的优缺点_2019年中国云计算行业竞争格局与发展趋势分析「图」
- 网上商城—管理员修改商品
- bean注入属性_摆脱困境:将属性值注入配置Bean
- js img转换base64
- DeepWalk: Online Learning of Social Representations-1
- js基础知识学习(二)
- 亲密关系沟通-【匹配度】调整沟通模式
- JDBC秒变C3P0连接池——再加连接解耦
- java linux root权限管理_Linux--开启root用户并允许管理员登录
- 论Spring开发框架
- Apache Wicket 1.5发布
- 大神级ppt作品欣赏_中班美术课件星空PPT课件教案图片音乐
- 【学术 | 比赛】比赛?论文?先收藏!29个学术网站,比赛论文不再困难
- WireShark基本使用(5)第 5 章 文件输入/输出及打印
- JavaScript系列之条件运算符
- 【Cesium】加载互联网地图服务——高德地图
- 齐鲁工业大学计算机科学与技术学院院长,齐鲁工业大学计算机科学与技术学院导师教师师资介绍简介-翟翌...
- 测试开发成长学习路线--如何做一个DevOps流水线上的开发测试