最近在处理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(); }
猜你喜欢
- 13天前(哈弗h9优惠9万是真的吗)热浪来袭,哈弗H9超值补贴火热加码
- 13天前(fender japan hybrid)Fender东京旗舰店盛大开幕在即,开售商品和店内服务提前揭晓
- 13天前(临沂 凯悦)临沂第一家凯悦嘉轩酒店开幕迎宾
- 13天前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 13天前(2025年“文化和自然遗产日”广东主会场活动举办)2025年“文化和自然遗产日”广东主会场活动举办
- 13天前(曼谷丽思卡尔顿公寓价格)曼谷丽思卡尔顿酒店盛大启幕,开创泰国奢华雅致新纪元
- 13天前(当科学邂逅喜剧:科技馆喜剧嘉年华背后的"文旅破壁者")当科学邂逅喜剧:科技馆喜剧嘉年华背后的"文旅破壁者"
- 13天前(2025年安徽省“百场黄梅唱响百家景区”示范展示启动)2025年安徽省“百场黄梅唱响百家景区”示范展示启动
- 13天前(大连aaaaa景区)辽宁大连A级旅游景区应急救护水平整体跃升
- 13天前(冬日生活还没安排?上抖音一键打包北方花式过冬精彩)冬日生活还没安排?上抖音一键打包北方花式过冬精彩
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章