最近在处理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(); }
猜你喜欢
- 14天前(哈弗h9优惠9万是真的吗)热浪来袭,哈弗H9超值补贴火热加码
- 14天前(fender japan hybrid)Fender东京旗舰店盛大开幕在即,开售商品和店内服务提前揭晓
- 14天前(临沂 凯悦)临沂第一家凯悦嘉轩酒店开幕迎宾
- 14天前(瑞士大酒店-自助餐怎么样)瑞意心旅,以食为先 瑞士酒店开启全新"瑞士早餐计划"
- 14天前(四川推进世界重要旅游目的地建设工作)四川推进世界重要旅游目的地建设
- 14天前(重庆恐龙化石遗址)重庆黔江恐龙化石抢救性发掘新闻发布会举行
- 14天前(苏梅岛普吉岛哪个好玩)苏梅岛金普顿基塔蕾度假酒店推出家庭度假套餐
- 14天前(携程租车加盟合作)携程租车加盟优势全解析:开启旅游出行市场新篇章
- 14天前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
- 14天前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章