java中excel文件下载
1、System.getProperty(user.dir) 获取的是启动项目的容器位置
2、 Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
- StandardCopyOption.REPLACE_EXISTING 来忽略文件已经存在的异常,如果存在就去覆盖掉它
- StandardCopyOption.COPY_ATTRIBUTES copy文件的属性,最近修改时间,最近访问时间等信息,不仅copy文件的内容,连文件附带的属性一并复制
//获得要下载的excel的模板、其中mb.xlsx是模板String sourceFilePath = System.getProperty("user.dir") + File.separator + "mb.xlsx";//获得用户的当前工作目录String currentPath = System.getProperty("user.dir");//创建要生成的excel的路径String fileName1 = "mb" + System.currentTimeMillis();String destinationFilePath = currentPath + File.separator + fileName1 + ".xlsx";// 创建源文件和目标文件对象File sourceFile = new File(sourceFilePath);File destinationFile = new File(destinationFilePath);try {// 复制文件Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING);System.out.println("文件复制成功!");} catch (IOException e) {e.printStackTrace();}//填充数据exportRawData(list, 1, destinationFilePath);String fileName = "分析-" + s + "月.xlsx";File file = new File(destinationFilePath); if (file.exists()) {String mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";response.setContentType(mimeType);response.setContentLength((int) file.length());response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));try (BufferedInputStream inStream = new BufferedInputStream(new FileInputStream(file));BufferedOutputStream outStream = new BufferedOutputStream(response.getOutputStream())) {byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = inStream.read(buffer)) != -1) {outStream.write(buffer, 0, bytesRead);}}} else {response.sendError(HttpServletResponse.SC_NOT_FOUND);}Files.delete(Paths.get(destinationFilePath));
}
填充数据的代码:
boolean exportRawData(List<ImpactIndexTable> list, Integer type, String filePath) {String sheetName ="原始数据";// 要填充数据的起始行数int rowNum = 4;// 要填充数据的起始列数int colNum = 0;int rowTotal = 18;try (FileInputStream fis = new FileInputStream(filePath);Workbook workbook = new XSSFWorkbook(fis)) {Sheet sheet = workbook.getSheet(sheetName);if (sheet == null) {// 如果指定的工作表不存在,可以在这里进行处理log.info("指定的工作表不存在!");}for (int i = 0; i < list.size(); i++) {// 创建并设置单元格样式CellStyle style = workbook.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.CENTER);SXSSFWorkbook wb = new SXSSFWorkbook(-1);// 获取要填充的行Row row = sheet.getRow(rowNum + i);if (row == null) {row = sheet.createRow(rowNum + i);}for (int n = 0; n < rowTotal; n++) {Cell cell = row.createCell(colNum + n);switch (n) {case 0:cell.setCellValue(list.get(i).getProjectName());cell.setCellStyle(style);break;case 1:cell.setCellValue(list.get(i).getHw());cell.setCellStyle(style);break;//后续按照需要填充数据default:}}}// 保存修改后的Excel文件try (FileOutputStream fos = new FileOutputStream(filePath)) {workbook.write(fos);log.info("数据导出成功:{}", type);return true;}} catch (Exception e) {log.error("导出错误:{}", e);}return false;}
相关文章:
java中excel文件下载
1、System.getProperty(user.dir) 获取的是启动项目的容器位置 2、 Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING); StandardCopyOption.REPLACE_EXISTING 来忽略文件已经存在的异常,如果存在就去覆盖掉它Sta…...
29 | 广州美食店铺数据分析
广州美食店铺数据分析 一、数据分析项目MVP加/价值主张宣言 随着经济的快速发展以及新媒体的兴起,美食攻略、美食探店等一系列东西进入大众的眼球,而人们也会在各大平台中查找美食推荐,因此本项目做的美食店铺数据分析也是带有可行性的。首先通过对广东省的各市美食店铺数量…...
fastApi基础
1、fastApi简介 官方文档:https://fastapi.tiangolo.com/ 源码: https://github.com/tiangolo/fastapi 2、环境准备 安装python 安装pycharm 安装fastAPI 安装 uvicorn 查看已经安装的第三方库:pip list 查看pip 配置信息:pip co…...
Mysql整理二 - 常见查询语句面试题(附原表)
表结构,创建原表的代码在最后 -- cid课程id; tid老师id; sid学生id; select * from t_mysql_course; select * from t_mysql_score; select * from t_mysql_student; select * from t_mysql_teacher; 1. 查询" 01 “课程比” 02 "课程成绩高的学生的信息…...
Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本
前言 本文对使用python读取pdf、word、excel、ppt、csv、txt等常用文件,并提取所有文本的方法进行分享和使用总结。 可以读取不同文件的库和方法当然不止下面分享的这些,本文的代码主要目标都是:方便提取文件中所有文本的实现方式。 这些库的…...
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码: #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…...
持续输出:自媒体持续输出文字内容、视音频创作(视频课程、书籍章节)
以下是自媒体持续输出文字内容、视音频创作的最佳方法: 灵感来源:寻找灵感来源是自媒体创作的重要一环。可以从日常生活、网络热点、行业动态等方面寻找创作灵感。 确定主题:在确定主题的时候,需要根据读者和观众的需求ÿ…...
篇十七:备忘录模式:恢复对象状态
篇十七:"备忘录模式:恢复对象状态" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...
初识mysql数据库之图形化界面
目录 一、好用的数据库图形化界面软件 1. Navicat 2. SQLyog 3. MYSQL Workbench 二、MYSQL Workbench基本使用 1. 安装 2. 远端连接 3. 执行sql语句 一、好用的数据库图形化界面软件 在以前的文章中,一共介绍了两种使用数据库的方式,分别为在l…...
APP外包开发的H5开发框架
跨平台移动应用开发框架允许开发者使用一套代码在多个操作系统上构建应用程序,从而节省时间和资源。以下是一些常见的跨平台移动应用开发框架以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司࿰…...
高性能跨平台网络通信框架 HP-Socket v5.9.3
项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4478351216.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v5.9.3 更新 一、主要更新 问题修复:通过 POST/PUT 等带有请求内容的 HTTP 方…...
Vue3.2+TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式,最后教给大家自己封装一个时间hooks,直接复用
Vue3.2TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式 最后教给大家自己封装一个时间hooks,直接复用 1.没有封装,直接使用 <template><div><ul><li v-for"item,index in arr" :k…...
05 mysql innodb page
前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…...
记录一次electron打包提示文件找不到的解决方法
没有配置files选项 files的作用是配置打包到应用程序的构建资源 就是说如果你想使用项目那个目录下的文件 就得通过files配置一下不然就会报错 json文件或者yml文件会报的错 格式是这样的 "files": ["dist-electron", "dist"],electron打包配…...
《大型网站技术架构》第二篇 架构-高可用
高可用在公司中的重要性 对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到&#…...
VS Code 使用cnpm下载包失败
一、 问题如下: 网上找到的解决方法是要在powershell中执行: Set-ExecutionPolicy RemoteSigned进行更改策略。 首先我们解释下这个Set-ExecutionPolicy RemoteSigned,Set-ExecutionPolicy 是一个 PowerShell 命令,用于控制脚本…...
【图像分类】CNN + Transformer 结合系列.4
介绍两篇利用Transformer做图像分类的论文:CoAtNet(NeurIPS2021),ConvMixer(ICLR2022)。CoAtNet结合CNN和Transformer的优点进行改进,ConvMixer则patch的角度来说明划分patch有助于分类。 CoAtN…...
分享一下利用Vue表单处理实现复杂表单布局
在开发Web应用程序中,表单是非常常见的一种元素。而在某些情况下,我们需要实现一些更为复杂的表单布局,以满足业务需求。使用Vue.js作为前端框架,我们可以很方便地处理复杂表单布局,并且实现数据的双向绑定。 下面来将…...
SAP Fiori 问题收集
事务代码篇 启动工作台:/N/UI2/FLP 错误日志: /n/IWFND/ERROR_LOG 服务清单: /n/IWFND/MAINT_SERVICE 创建语义对象:/N/UI2/SEMOBJ 创建目录:/N/UI2/FLPD_CONF(cross-client)或 /N/UI2…...
econml双机器学习实现连续干预和预测
连续干预 在这个示例中,我们使用LinearDML模型,使用随机森林回归模型来估计因果效应。我们首先模拟数据,然后模型,并使用方法来effect创建不同干预值下的效应(Conditional Average Treatment Effect,CATE&…...
Phi-4-reasoning-vision-15B应用场景:法律文书截图→当事人/案由/判决结果三要素抽取
Phi-4-reasoning-vision-15B在法律文书分析中的应用:三要素智能抽取实践 1. 法律文书处理的痛点与解决方案 法律从业者每天需要处理大量裁判文书、合同协议等法律文件。传统的人工阅读和提取关键信息的方式存在效率低下、容易遗漏等问题。以一份典型的法院判决书为…...
IMX6ULL实战:从零构建LVGL嵌入式GUI
1. 环境准备与源码获取 第一次接触IMX6ULL和LVGL的朋友可能会觉得有点懵,其实只要跟着步骤走,移植过程并不复杂。我去年在做一个工业HMI项目时就用这套组合,实测下来稳定性很不错。先说说需要准备的东西: 开发环境方面,…...
go-zero RESTful API的proto定义规范
go-zero RESTful API的proto定义规范 一、proto 文件在 go-zero 生态中的角色 1.1 从 API 定义到 Go 代码的完整链路 在 go-zero 的 RPC 服务体系中,.proto 文件是唯一的「事实来源」(Single Source of Truth)。它不仅定义了服务接口、请求/响…...
SOONet模型助力AIGC内容创作:自动从长视频中提取素材片段
SOONet模型助力AIGC内容创作:自动从长视频中提取素材片段 不知道你有没有过这样的经历:想做一个关于“英雄登场”的短视频混剪,结果花了大半天时间,在几十集的电视剧里一帧一帧地找合适的镜头。或者,想从一部纪录片里…...
Spring Batch 2.2.0.M1 是 Spring Batch 项目的**里程碑版本(Milestone 1)
Spring Batch 2.2.0.M1 是 Spring Batch 项目的里程碑版本(Milestone 1),发布于 2013 年左右(具体为 2013 年 3 月),属于 Spring Batch 2.2.x 系列的首个预发布版本。该版本主要聚焦于增强批处理的可扩展性…...
只需四分钟我会让你变得自信到可怕,从此告别自卑内耗。这不是成功学鸡汤
前沿导读你是否常感觉聚光灯时刻跟着自己,生怕哪里做得不对?你是否因为害怕失败,错过了很多展示的机会?别让误解困住了你。真正的自信,源于清醒的自我认知和主动的行为构建。这篇文章不讲鸡汤,只给你一套可…...
量化策略回测必备:一份让TA-Lib的MACD/KDJ与通达信对齐的Python代码库
量化策略回测必备:让TA-Lib的MACD/KDJ与通达信严格对齐的工程实践 在量化交易领域,技术指标的计算一致性是策略回测可靠性的生命线。许多开发者都遇到过这样的困境:自己用TA-Lib计算的MACD指标与通达信软件显示的结果存在微妙差异,…...
别再瞎选启动盘格式了!用Rufus烧录Windows安装盘时,MBR和GPT到底怎么选?(附DiskGenius查看方法)
启动盘格式选择指南:MBR与GPT的终极决策逻辑 每次用Rufus制作Windows安装盘时,面对MBR和GPT两个选项,你是不是总在纠结该选哪个?这就像站在分叉路口,生怕选错方向耽误一整天。其实答案藏在你的硬件配置和使用场景里——…...
光学工程师必看:PSD曲线里的‘控制线’到底怎么画?(含A/B/C/D参数详解)
光学工程师实战指南:PSD控制线参数A/B/C/D的工程化应用解析 在激光陀螺仪的生产线上,质检主管张工发现同一批光学元件的PSD曲线在400-600mm⁻频段频繁触及控制线边缘。当他尝试调整B参数从2.1降到1.8时,产品合格率立即提升了15%——这个真实案…...
题解:洛谷 P5854 【模板】笛卡尔树
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...
