最近在处理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(); }
猜你喜欢
- 21天前(兰州旅游文化产业发展有限公司)甘肃省兰州市2023年乡村旅游暨A级旅游景区管理工作培训班开班
- 21天前(万达酒店及度假村连续五年荣获“中国饭店集团60强”)万达酒店及度假村连续五年荣获“中国饭店集团60强”
- 21天前(瑞士大酒店-自助餐怎么样)瑞意心旅,以食为先 瑞士酒店开启全新"瑞士早餐计划"
- 21天前(屿见不一样是哪个酒店)屿见白纱,遇见自己 “佳能PhotoGirls屿见白纱”摄影派对玩转海岛
- 21天前(甘州区文化旅游局)2025甘津文旅资源对接推介会在兰州举办
- 21天前(澳涞山庄见证北欧零碳到中国实践,世界十佳环境保护城市榜单发布)澳涞山庄见证北欧零碳到中国实践,世界十佳环境保护城市榜单发布
- 21天前(希尔顿集团2021年筹建的酒店)希尔顿集团两大重点项目亮相第四届上海旅游投资促进大会
- 21天前(锦州新增两家国家aaa级旅游景区有哪些)锦州新增两家国家AAA级旅游景区
- 21天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
- 21天前(我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章