当前位置: 首页 > news >正文

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.lryc.cn/news/286904.html

相关文章:

  • 【心得】java从CC1链入门CC链个人笔记
  • Django migration 新增外键的坑
  • 相关系数(皮尔逊相关系数和斯皮尔曼相关系数)
  • 了解 Vite 插件
  • 算法竞赛基础:C++双向链表的结构和实现(普通链表、List、静态链表)
  • openssl3.2/test/certs - 019 - ca-nonca trust variants: +serverAuth, +anyEKU
  • Unity SRP 管线【第五讲:URP烘培光照】
  • Mysql运维篇(一) 日志类型
  • 【C语言】结构体与内存操作函数 总结
  • 第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)
  • C语言进阶——数据结构之链表(续)
  • 数据库课程设计-图书管理系统数据库设计
  • 【超简版,代码可用!】【0基础Python爬虫入门——下载歌曲/视频】
  • CommunityToolkit.Mvvm支持环境
  • 探讨品牌设计的本质,为企业形象注入活力!
  • 【Maven】-- 打包添加时间戳的两种方法
  • 图片分类: 多类别
  • python 抓包tcp数据拷贝转发
  • ubuntu 各版本图形界面和命令行切换快捷键介绍
  • 基于SpringBoot Vue博物馆管理系统
  • 关于预检请求
  • cookie in selenium 定时更新token
  • 【MIdjourney】一些材质相关的关键词
  • 递归组件怎么实现无线滚动
  • 致远OA如何开发 第十篇 数据库
  • 信息检索与数据挖掘 | (十)线性回归与逻辑回归
  • 【issue-halcon例程学习】measure_arc.hdev
  • RKE快速搭建离线k8s集群并用rancher管理界面
  • 代码随想录算法训练营第十四天|● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代
  • ❤css实用