java poi判断excel是xlsx还是xls类型

 更新时间:2024年10月29日 15:55:09   作者:java_丫丫程序媛  
这篇文章主要为大家详细介绍了如何利用java poi来判断excel是xlsx还是xls类型,文中的示例代码讲解详细,有需要的小伙伴可以参考一下

java poi判断excel是xlsx还是xls

依赖

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

代码

package com.test.excel;
 
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 java.io.File;
import java.nio.file.Files;
 
public class ExcelRateOneTest {
 
    public static void main(String[] args) {
        File file = new File("D:\\年轻干部人才库名册.xls");
        try {
            Workbook workbook = null;
            try {
                workbook = new XSSFWorkbook(Files.newInputStream(file.toPath()));
            } catch (Exception e) {
                System.out.println("该excel文件不是xlsx类型"+e.getMessage());
            }
            try {
                if (null == workbook) {
                    workbook = new HSSFWorkbook(Files.newInputStream(file.toPath()));
                }
            } catch (Exception e) {
                System.out.println("该文件不是excel文件"+e.getMessage());
            }
            if (workbook != null) {
                Sheet sheet = workbook.getSheetAt(0);
                Row row = sheet.getRow(0);
                Cell cell = row.getCell(0);
                System.out.println("单元格内容:" + getCellValue(cell));
            }
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
 
    /**
     * 根据单元格类型获取单元格内容,将内容转为字符串类型
     * @param cell 单元格
     * @return
     */
    public static String getCellValue(Cell cell) {
        if (cell == null) {
            return "";
        }
        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellValue();
            case NUMERIC:
                return cell.getNumericCellValue() + "";
            case BOOLEAN:
                return cell.getBooleanCellValue() + "";
            case FORMULA:
                return cell.getCellFormula() + "";
            default:
                return "";
        }
    }
}

知识补充

除了上文的内容,小编还为大家整理了Java利用poi解析xlsx和xls文件的相关代码,希望对大家有所帮助

遇到过处理excel的问题,在网上找了很久,感觉他们的代码太乱太复杂,这是我精简版的excel处理代码,简单暴力。

首先,为什么使用poi?jxl只能处理03版之前的excel,也就是xls结尾的,不能处理xlsx。poi兼容两种格式,poi解析两种格式的文件时,唯一的不同就是xls时,为HSSF;xlsx时,为XSSF。

首先是处理Cell对象的小方法:

//这个方法对cell进行处理,传入cell对象,返回cell中内容,String类型。
public static String getCellFormatValue(Cell cell) {
		String cellValue = "";
		if (cell != null) {
			// 判断cell类型
			switch (cell.getCellType()) {
			case Cell.CELL_TYPE_NUMERIC: {
				cellValue = String.valueOf(cell.getNumericCellValue());
				break;
			}
			case Cell.CELL_TYPE_STRING: {
				cellValue = cell.getRichStringCellValue().getString();
				break;
			}
			default:
				cellValue = "";
			}
		}
		return cellValue;
	}

两种处理excel的代码:

xls时:

InputStream inputStream = new FileInputStream("绝对路径.xls");
		HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
		HSSFSheet s = workbook.getSheetAt(0);
		for (int j = 0; j < s.getPhysicalNumberOfRows(); j++) {//获取总行数
			Row row = s.getRow(j); // 取出第i行 getRow(index) 获取第(j)行
			for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) { // getPhysicalNumberOfCells() 获取当前行的总列数
				String value1 = getCellFormatValue(row.getCell(k));//取出第j行第k列的值
				System.out.println(value1);
			}
		}
		workbook.close();

xlsx时:

InputStream inputStream = new FileInputStream("绝对路径.xlsx");
		XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
		XSSFSheet s = workbook.getSheetAt(0);
		for (int j = 0; j < s.getPhysicalNumberOfRows(); j++) {//获取总行数
			Row row = s.getRow(j); // 取出第i行 getRow(index) 获取第(j)行
			for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) { // getPhysicalNumberOfCells() 获取当前行的总列数
				String value1 = getCellFormatValue(row.getCell(k));//取出第j行第k列的值
				System.out.println(value1);
			}
		}
		workbook.close();

以上就是java poi判断excel是xlsx还是xls类型的详细内容,更多关于java判断excel是xlsx还是xls的资料请关注脚本之家其它相关文章!

相关文章

  • 详解spring中的Aware接口功能

    详解spring中的Aware接口功能

    Spring的依赖注入的最大亮点是所有的Bean对Spring容器的存在是没有意识的,我们可以将Spring容器换成其他的容器,Spring容器中的Bean的耦合度因此也是极低的,本文重点给大家介绍spring中的Aware接口,感兴趣的朋友一起看看吧
    2022-02-02
  • jwt生成token和token解析基础详解

    jwt生成token和token解析基础详解

    这篇文章主要为大家介绍了jwt生成token和token解析基础,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 使用feign客户端传参接收不到的问题及解决

    使用feign客户端传参接收不到的问题及解决

    这篇文章主要介绍了使用feign客户端传参接收不到的问题及解决,具有很好的参考价值,希望对大家有所帮助。
    2022-03-03
  • Java实战个人博客系统的实现流程

    Java实战个人博客系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+springboot+mybatis+redis+vue+elementui+Mysql实现一个个人博客系统,大家可以在过程中查缺补漏,提升水平
    2022-01-01
  • IDEA快速部署Spring Boot 项目到Docker的实现方法

    IDEA快速部署Spring Boot 项目到Docker的实现方法

    本文主要介绍了IDEA快速部署Spring Boot 项目到Docker的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java的List集合框架之Vector详细解析

    Java的List集合框架之Vector详细解析

    这篇文章主要介绍了Java的List集合框架之Vector详细解析,List接口继承Collection,Collection继承于Iterable,List接口实现类分为Vector、ArrayList、LinkedList,Vector底层是一个Object数组,需要的朋友可以参考下
    2023-11-11
  • idea修改maven模块名称还显示老名称问题解决

    idea修改maven模块名称还显示老名称问题解决

    本文主要介绍了idea修改maven模块名称还显示老名称问题解决,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • Java对象在JVM中的生命周期详解

    Java对象在JVM中的生命周期详解

    这篇文章主要介绍了Java对象在JVM中的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)

    Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)

    大家在使用Intellij IDEA 的时候会经常遇到各种乱码问题,今天小编给大家分享一些关于Intellij IDEA 2019 最新乱码问题及解决必杀技,感兴趣的朋友跟随小编一起看看吧
    2020-04-04
  • java使用list实现数据库的like功能

    java使用list实现数据库的like功能

    这篇文章主要介绍了java使用list实现数据库的like功能,需要的朋友可以参考下
    2014-04-04

最新评论