POI解析1997-2003、2007版本excel

2024-06-21 16:38

本文主要是介绍POI解析1997-2003、2007版本excel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文就poi解析1997-2003/2007版本进行总结,走统一接口。

maven引入:
这里写图片描述

sheet存储模型

import java.util.HashMap;
import java.util.Map;/*** excel sheet 模型抽象* Created by xieyang@e6yun.com on 2016年11月2日.**/
public class SheetCollection {/***sheet 名称 */private String sheetName;/*** key :行号* value: [key:名称;value:单元格的值]*/private Map<String, Map<String, String>> sheetMapCollection=new HashMap<String, Map<String,String>>();/*** sheet 集合中新增一行* Created by xieyang@e6yun.com on 2016年11月2日.* @param rowId 行号* @param rowValues 行中单元格集合*/public void insertRow(String rowId,Map<String, String> rowValues){sheetMapCollection.put(rowId, rowValues);}public String getSheetName() {return sheetName;}public void setSheetName(String sheetName) {this.sheetName = sheetName;}public Map<String, Map<String, String>> getSheetMapCollection() {return sheetMapCollection;}public void setSheetMapCollection(Map<String, Map<String, String>> sheetMapCollection) {this.sheetMapCollection = sheetMapCollection;}@Overridepublic String toString() {return "SheetCollection [sheetName=" + sheetName+ ", sheetMapCollection=" + sheetMapCollection + "]";}
}

excel存储模型,多个sheet集合

import java.util.ArrayList;
import java.util.List;/*** excel sheet集合* Created by xieyang@e6yun.com on 2016年11月2日.**/
public class ExcelCollection {/*** excel 描述*/private String excelDesc;/*** 多个sheet集合*/private  List<SheetCollection> sheetCollections=new ArrayList<SheetCollection>();/*** 添加一个sheet数据集合* Created by xieyang@e6yun.com on 2016年11月2日.* @param sheetCollection*/public void insertSheet(SheetCollection sheetCollection){sheetCollections.add(sheetCollection);}public String getExcelDesc() {return excelDesc;}public void setExcelDesc(String excelDesc) {this.excelDesc = excelDesc;}public List<SheetCollection> getSheetCollections() {return sheetCollections;}public void setSheetCollections(List<SheetCollection> sheetCollections) {this.sheetCollections = sheetCollections;}@Overridepublic String toString() {return "ExcelCollection [excelDesc=" + excelDesc+ ", sheetCollections=" + sheetCollections + "]";}
}

excel 解析助手

import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.xssf.usermodel.XSSFWorkbook;import com.e6yun.routeOptimize.common.Constants;
import com.e6yun.routeOptimize.utils.excel.model.ExcelCollection;
import com.e6yun.routeOptimize.utils.excel.model.SheetCollection;/*** excel助手* excel 03,07版本解析与写入* Created by xieyang@e6yun.com on 2016年11月2日.**/
public class ExcelUtils {private static Logger logger=Logger.getLogger(ExcelUtils.class);/*** 解析excel* Created by xieyang@e6yun.com on 2016年11月2日.* @param fileName* @return*/public static ExcelCollection parseExcel(String fileName){ExcelCollection excelCollection=null;try {//excel Poi顶层抽象Workbook workbook=null;if(fileName.endsWith(Constants.EXCEL_03_SURFIX)){workbook=new HSSFWorkbook(new FileInputStream(fileName));}else if(fileName.endsWith(Constants.EXCEL_07_SURFIX)){workbook=new XSSFWorkbook(fileName);}else{return excelCollection;}//解析excelexcelCollection=getExcelFromWorkBook(workbook);//关闭excel文件释放资源workbook.close();} catch (IOException e) {logger.error(String.format("Parse Excel [%s] fail!,The Reason Is [%s]", fileName,e));}return excelCollection;}/*** 从WorkBook中获取数据* Created by xieyang@e6yun.com on 2016年11月2日.* @param workbook* @return*/private static ExcelCollection getExcelFromWorkBook(Workbook workbook){ExcelCollection excelCollection=new ExcelCollection();//获取sheet数量int sheetNums=workbook.getNumberOfSheets();//遍历sheetfor (int i=0;i<sheetNums;i++) {Sheet sheet=workbook.getSheetAt(i);SheetCollection sheetCollection=new SheetCollection();//获取sheet名称String sheetName=sheet.getSheetName();sheetCollection.setSheetName(sheetName);//sheet中总行数int rowNums=sheet.getLastRowNum();Map<String, String> tempTitleMap=new HashMap<String, String>();for (int rowIndex = 0; rowIndex < rowNums; rowIndex++) {Map<String, String> rowMap=new HashMap<String, String>();Row row=sheet.getRow(rowIndex);//获取每行的列数short columnNums=row.getLastCellNum();for (int columnIndex = 0; columnIndex < columnNums; columnIndex++) {Cell cell=row.getCell(columnIndex);if(cell!=null){cell.setCellType(HSSFCell.CELL_TYPE_STRING);if(rowIndex==0){//加入到临时表头中tempTitleMap.put(columnIndex+"", cell.getStringCellValue());}rowMap.put(tempTitleMap.get(columnIndex+""), cell.getStringCellValue());}}sheetCollection.insertRow(rowIndex+"", rowMap);}excelCollection.insertSheet(sheetCollection);}return excelCollection;}}
常量

这里写图片描述

这篇关于POI解析1997-2003、2007版本excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081757

相关文章

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

springboot3.4和mybatis plus的版本问题的解决

《springboot3.4和mybatisplus的版本问题的解决》本文主要介绍了springboot3.4和mybatisplus的版本问题的解决,主要由于SpringBoot3.4与MyBat... 报错1:spring-boot-starter/3.4.0/spring-boot-starter-

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解