Java Excel分割成许多小文件

最近在处理excel,数据很多,需要将excel拆分成许多小块,并保留原来的格式,于是写了该算法,并能保留原来的样式,使用很简单:

Sheet splitSheet = ExcelUtil.split(sheet, 0, 20, 5, 8);

传入开始行、结束行、开始列、结束列即可

    public static Sheet split(Sheet sheet, int startRow, int endRow, int startCol, int endCol) {Workbook workbook = new SXSSFWorkbook();Sheet newSheet = workbook.createSheet("Sheet1");for (int i = startRow; i <= endRow; i++) {Row tableDataRow = sheet.getRow(i);Row newRow = newSheet.createRow(i - startRow);if (tableDataRow == null) {continue;}for (int j = startCol; j <= endCol; j++) {Cell cell = tableDataRow.getCell(j);Cell newCell = newRow.createCell(j - startCol);CellStyle cellStyle = workbook.createCellStyle();cellStyle.cloneStyleFrom(cell.getCellStyle());newCell.setCellStyle(cellStyle);newCell.setCellValue(cell.getStringCellValue());}}for (CellRangeAddress mergedRegion : sheet.getMergedRegions()) {int firstRow = mergedRegion.getFirstRow();int lastRow = mergedRegion.getLastRow();int firstColumn = mergedRegion.getFirstColumn();int lastColumn = mergedRegion.getLastColumn();if (firstRow >= startRow && lastRow <= endRow && firstColumn >= startCol && lastColumn <= endCol) {CellRangeAddress cellAddresses = new CellRangeAddress(firstRow - startRow, lastRow - startRow, firstColumn - startCol, lastColumn - startCol);newSheet.addMergedRegion(cellAddresses);}}return newSheet;}

测试代码

    public static void main(String[] args) throws Exception {String path = "xxx.xlsx";String targetPath = "xxx1.xlsx";FileInputStream fis = null;File file = new File(path);try {fis = new FileInputStream(file);Workbook workbook = WorkbookFactory.create(fis);Sheet sheet = workbook.getSheetAt(0);Sheet splitSheet = ExcelUtil.split(sheet, 0, 20, 5, 8);ExcelUtil.saveSheet(targetPath,splitSheet);} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}

保存sheet工具类

    public static void saveSheet(String path, Sheet sheet) throws IOException {File file = new File(path);FileOutputStream fos = new FileOutputStream(file);sheet.getWorkbook().write(fos);fos.close();sheet.getWorkbook().close();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

一、背景 docker安装jenkins&#xff0c;可能你会反问&#xff0c;这太简单了&#xff0c;有什么好讲的。 我最近就接手了一个打包项目&#xff0c;它是一个nodejs的前端项目&#xff0c;jenkins已在容器里部署且运行OK。 但是&#xff0c;前端组很追求新技术&#xff0c;不…

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性&#xff0c;较固定资产抵押和质押、第三方担保等方式&#xff0c;股权质押融资风险易受企业经营状况等因素的影响&#xff0c;主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…

AcWing 1204.错误票据(读取未知个数数据的新方法)

[题目概述] 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的&#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽&#xff0c;在录入ID号的时候发生了一处错误&#xff0c;造成了某个ID断号&#xff0c;另…

前端面试题汇总大全(含答案)-- 持续更新

​一、HTML 篇 1. 简述一下你对 HTML 语义化的理解&#xff1f; 用正确的标签做正确的事情。 html 语义化让页面的内容结构化&#xff0c;结构更清晰&#xff0c;便于对浏览器、搜索引擎解析&#xff1b;即使在没有样式 CSS 情况下也以一种文档格式显示&#xff0c;并且是容易…

所以说为什么面试两百家到手offer却只有个位数

一直以来&#xff0c;我面试过快两百家公司了&#xff0c;拿到手的offer不超过10个手指头。 我总是会在面不上的时候&#xff0c;在群里发牢骚&#xff0c;为什么自己要做无用功&#xff0c;为什么面试官问的问题那么简单我答不上来&#xff0c;为什么问我我不熟悉的地方&…

学习Spring的第八天

先对自定义类使用MyComponet的注解&#xff0c;在设置这个MyComponet的的属性(一个 interface接口)&#xff0c;然后&#xff0c;扫描(BaseClassScanUtils.java执行,这文件不重要)当前包下是否有这个注解的类&#xff0c;再用MyComponentBeanFactoryPostProcessor.java(后工厂…

vue和react的hooks

一、什么是hooks 直译“钩子”&#xff0c;在程序中代表&#xff0c;系统运行在某一时期时&#xff0c;会调用注册在该时机的回调函数。例如浏览器提供的onload或addEventListener能注册在浏览器各种时机调用的方法。 二、react中的hooks 一系列以“use”作为开发的方法&…

AI智能绘图,触手可及的未来

AI智能绘图不仅仅是技术的体现&#xff0c;更是对人类情感的共鸣。它能够根据用户的描述或情感需求&#xff0c;自动生成与之相匹配的画作。它们或细腻如丝&#xff0c;或磅礴如海&#xff0c;或温婉如诗&#xff0c;或激昂如歌&#xff0c;而这正是AI智能绘图的魅力所在。 所…

第25章酉性,推导内积的来源

躺平一念起&#xff0c;再看忽觉天地宽。 躺了一天&#xff0c;现在要继续开始写文字了&#xff0c;之前提到了非退化形式那就不再解释这个了&#xff0c;直接用&#xff0c;继续从讲过复数域接着讲&#xff0c; 复数域是域&#xff0c;是一个大的空间&#xff0c;向量的定义…

vue-使用echarts+echarts-gl实现某个省份地区地图3d可视化

前言 最近在开发中遇到一个需求&#xff0c;需要把一个地区地图变成3d感觉悬浮在大屏中间配合业务需求 其实echarts配合三方库就可以实现这个效果&#xff0c;具体细节需要自己调整 代码实现 1.下载各省份各地区地图数据-json文件-根据需求下载对应地图json数据引入即可 最…

笨蛋学设计模式结构型模式-享元模式【13】

结构型模式-享元模式 7.7享元模式7.7.1概念7.7.2场景7.7.3优势 / 劣势7.7.4享元模式可分为7.7.5享元模式7.7.6实战7.7.6.1题目描述7.7.6.2输入描述7.7.6.3输出描述7.7.6.4代码 8.1.7总结享元模式 7.7享元模式 7.7.1概念 ​ 享元模式是通过共享对象减少内存使用&#xff0c;来…

bgp基础实验

最终实验效果: 全网可达:R1,R7路由表都有r1-r7环回,R1汇总0.0/22和1.0/24,R7另一环回172.16.2.1/32 用tracert命令来R1 ping R7环回,实现全网通 实现代码: 首先配置好接口ip和环回,然后: [r1] rip 1 version 2 network 1.0.0.0 network 12.0.0.0 network 192.168.1.0 …

顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音:一步步配置(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件如何实现自己呼叫自己并且放音&#xff1a;一步步配置 一、配置acl.conf 打开ccadmin-》点击配置文件并且打开acl.conf-》配置好了点击提交XML。 注意&#xff1a;acl.conf的服务器IP必须是内网IP 添加了之后在运维调试输入reloadacl 在运维调试执…

【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot

1、使用命令安装 sudo apt install qtcreator sudo apt install qt6-* sudo apt install libqt6* sudo apt install qml-qt6 sudo apt install qmlscene-qt6 sudo apt install assistant-qt6 sudo apt install designer-qt62、启动 qtcreator 3、常用工具安装 sudo apt in…

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

文章目录 前言问题分析解决方案方案一&#xff1a;使用 CDATA 区块&#xff0c;依然使用 “ > ” 或者 “ < ”方案二&#xff1a;使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错&#xff1a; Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…

目标文献分析方法

如何正确选题&#xff1f; 不仅仅是题目&#xff0c;而是研究工作的起步选题步骤&#xff1f; 发现问题选择方向调查研究分析论证确定选题 中国知网 深度学习方向词 1检索&#xff1a;深度学习 医疗影像 1 发表时间要最新 2 显示50个&#xff0c;全选 3 导出文献格式Ref 4 导…

SpringCloud Aliba-Sentinel【中篇】-从入门到学废【5】

目录 1.流控规则 2. 熔断规则 3.热点规则 1.流控规则 1.资源名&#xff1a;唯一名称&#xff0c;默认请求路径 2.针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源) 3.阈值类型/单机阈值&#xff1a; QPS&#xff08;每秒钟的请求数量&…

高光谱分类论文解读分享之HybridSN:基于 3-D–2-D CNN 的高光谱分类(经典回顾)

IEEE GRSL 2019&#xff1a;HybridSN&#xff1a;基于 3-D–2-D CNN 的高光谱分类 题目 HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification 作者 Swalpa Kumar Roy, Student Member, IEEE, Gopal Krishna, Shiv Ram Dubey , Mem…

探秘网络爬虫的基本原理与实例应用

1. 基本原理 网络爬虫是一种用于自动化获取互联网信息的程序&#xff0c;其基本原理包括URL获取、HTTP请求、HTML解析、数据提取和数据存储等步骤。 URL获取&#xff1a; 确定需要访问的目标网页&#xff0c;通过人工指定、站点地图或之前的抓取结果获取URL。 HTTP请求&#…

python有哪些解释器?

Python的解释器有&#xff1a; CPython&#xff1a;官方的Python解释器&#xff0c;使用C语言实现。Jython&#xff1a;运行在Java平台上的Python解释器&#xff0c;使用Java语言实现。IronPython&#xff1a;运行在.NET平台上的Python解释器&#xff0c;使用C#语言实现。PyPy…