最近在处理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天前(大理悦云雅阁酒店电话)雅阁酒店集团|端午佳节礼遇,大理悦云雅阁度假酒店
- 14天前(安徽民宿发展报告)首届安徽省乡村民宿创意设计大赛启动
- 14天前(fender japan hybrid)Fender东京旗舰店盛大开幕在即,开售商品和店内服务提前揭晓
- 14天前(七尚酒店百度百科)Lohkah七尚酒店首度开创充满新知的闽地研学旅程
- 14天前(兵团猛进秦剧团持续开展“戏曲进校园”活动)兵团猛进秦剧团持续开展“戏曲进校园”活动
- 14天前(东北地区全域旅游)东北三省一区宣传贯彻研学旅游行业标准
- 14天前(云南南博会展馆)旅居云南馆亮相第9届南博会
- 14天前(“为人民绽放——国家艺术基金优秀剧目展演”在合肥开幕)“为人民绽放——国家艺术基金优秀剧目展演”在合肥开幕
- 14天前(希尔顿集团2021年筹建的酒店)希尔顿集团两大重点项目亮相第四届上海旅游投资促进大会
- 14天前(海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章