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

POI导入带有合并单元格的excel,demo实例,直接可以运行

直接可以运行

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;public class TestExcel2 {public static void main(String[] args) throws Exception {String filePath = "C:\\Users\\Administrator\\Desktop\\试导入.xlsx";File file = new File(filePath);if (!file.exists()) {System.out.println(" File not exists ...");return;}List list = dealExcel(new FileInputStream(file), "试导入.xlsx");list.forEach(t->{System.out.println(t.toString());});}/*** 处理上传的文件*/public static List dealExcel(InputStream in, String fileName) throws Exception {List listResult = new ArrayList<>();Workbook work = getWorkbook(in, fileName);if (null == work) {throw new Exception("创建Excel工作薄为空!");}Sheet sheet = null;Row row = null;Cell cell = null;for (int i = 0; i < work.getNumberOfSheets(); i++) {sheet = work.getSheetAt(i);if (sheet == null) {continue;}for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {row = sheet.getRow(j);if (row == null) {continue;}List<Object> list = new ArrayList<>();for (int y = 0; y < row.getLastCellNum(); y++) {if (isMergedRegion(sheet,j,y)) {cell = getMergedRegionValue(sheet,j,y);}else{cell = row.getCell(y);}list.add(cell);}listResult.add(list);}}work.close();return listResult;}public static boolean isMergedRegion(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress range = sheet.getMergedRegion(i);int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow();int lastRow = range.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {Cell cell = sheet.getRow(firstRow).getCell(firstColumn);System.out.println(cell.getStringCellValue());System.out.println("++++++++++++++++++++++++++++");return true;}}}return false;}public static Cell getMergedRegionValue(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress range = sheet.getMergedRegion(i);int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow();int lastRow = range.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {Cell cell = sheet.getRow(firstRow).getCell(firstColumn);return cell;}}}return null;}/*** 判断文件格式*/public static Workbook getWorkbook(InputStream inputStream, String fileName) throws Exception {Workbook workbook = null;String fileType = fileName.substring(fileName.lastIndexOf("."));if (".xls".equals(fileType)) {workbook = new HSSFWorkbook(inputStream);} else if (".xlsx".equals(fileType)) {workbook = new XSSFWorkbook(inputStream);} else {throw new Exception("请上传excel文件!");}return workbook;}
}
http://www.lryc.cn/news/379812.html

相关文章:

  • 【C语言】解决C语言报错:Use-After-Free
  • C语言经典例题-19
  • AlmaLinux 更换CN镜像地址
  • 【笔记】【矩阵的二分】668. 乘法表中第k小的数
  • 红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架
  • emqx5.6.1 数据、配置备份与迁移
  • VUE3脚手架工具cli配置搭建及创建VUE工程
  • 前端开发之DNS协议
  • 如何在 Tailwind CSS 中实现居中对齐
  • 【iOS】编译二进制文件说明
  • 红队内网攻防渗透:内网渗透之内网对抗:隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线
  • qt+halcon实战
  • Java_POJO
  • 24年安克创新社招入职自适应能力cata测评真题分享北森测评高频题库
  • OpenCV中的圆形标靶检测——findCirclesGrid()(三)
  • C++拷贝构造函数、运算符重载函数、赋值运算符重载函数、前置++和后置++重载等的介绍
  • 视频智能分析平台智能边缘分析一体机视频监控业务平台区域人数不足检测算法
  • 揭秘MMAdapt:如何利用AI跨领域战胜新兴健康谣言?
  • 【云手机】数据安全如何保障?
  • 【算法专题--链表】删除排序链表中的重复元素 -- 高频面试题(图文详解,小白一看就懂!!)
  • 【ajax基础01】ajax简介
  • [数据集][目标检测]棉花叶子害虫检测数据集VOC+YOLO格式595张1类别
  • Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】
  • js 移除字符串中所有的a标签;js 移除字符串中所有的a标签,但是保留a标签包裹的部分
  • 深信服科技:2023网络安全深度洞察及2024年趋势研判报告
  • windows下mysql修改 my.ini的datadir后 `Access denied`
  • Java比较运算符
  • 「网络原理」IP 协议
  • 电商平台生活用品销售数据分析与应用
  • FastAdmin数据库设计规范