Java操作Excel文件解析与读写方法详解

yizhihongxing

Java操作Excel文件解析与读写方法详解

Excel文件是一种广泛应用于商业、金融等领域的数据处理工具。在Java开发中,操作Excel文件常常需要通过对Excel文件进行解析读取和写入操作。

Excel文件格式

Excel文件通常有两种常见的格式:xls和xlsx。其中,xls是Excel97-2003版本的二进制文件,而xlsx则是Excel 2007及以上版本所采用的基于XML的文件格式。在Java开发中,操作Excel文件需要根据实际需要选择相应的操作库进行开发。

jar包选择

  • 对于xls格式文件,可以使用Apache POI操作库进行处理。
  • 对于xlsx格式文件,可以使用Java Excel API(jxl)操作库,或者Apache POI中的XSSFWorkbook类进行处理。

解析Excel文件

解析xls格式文件

  • 程序示例:
try {
    File file = new File("sample.xls");
    FileInputStream inputStream = new FileInputStream(file);
    POIFSFileSystem fs = new POIFSFileSystem(inputStream);
    HSSFWorkbook workbook = new HSSFWorkbook(fs);
    HSSFSheet sheet = workbook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            switch (cell.getCellType()) {
                case Cell.CELL_TYPE_BOOLEAN:
                    System.out.print(cell.getBooleanCellValue() + "\t\t");
                    break;
                case Cell.CELL_TYPE_NUMERIC:
                    System.out.print(cell.getNumericCellValue() + "\t\t");
                    break;
                case Cell.CELL_TYPE_STRING:
                    System.out.print(cell.getStringCellValue() + "\t\t");
                    break;
            }
        }
        System.out.println("");
    }
    workbook.close();
    inputStream.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

解析xlsx格式文件

  • 程序示例:
try {
    File file = new File("sample.xlsx");
    FileInputStream inputStream = new FileInputStream(file);
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
    XSSFSheet sheet = workbook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            switch (cell.getCellTypeEnum()) {
                case BOOLEAN:
                    System.out.print(cell.getBooleanCellValue() + "\t\t");
                    break;
                case NUMERIC:
                    System.out.print(cell.getNumericCellValue() + "\t\t");
                    break;
                case STRING:
                    System.out.print(cell.getStringCellValue() + "\t\t");
                    break;
            }
        }
        System.out.println("");
    }
    workbook.close();
    inputStream.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

写入Excel文件

写入xls格式文件

  • 程序示例:
try {
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("Sample sheet");
    Map<String, Object[]> data = new TreeMap<String, Object[]>();
    data.put("1", new Object[]{"ID", "NAME", "LASTNAME"});
    data.put("2", new Object[]{1, "Tom", "Nickson"});
    data.put("3", new Object[]{2, "Sally", "Brooks"});
    data.put("4", new Object[]{3, "Lisa", "Mayer"});
    Set<String> keyset = data.keySet();
    int rownum = 0;
    for (String key : keyset) {
        Row row = sheet.createRow(rownum++);
        Object[] objArr = data.get(key);
        int cellnum = 0;
        for (Object obj : objArr) {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String)
                cell.setCellValue((String) obj);
            else if (obj instanceof Integer)
                cell.setCellValue((Integer) obj);
        }
    }
    FileOutputStream outputStream = new FileOutputStream("sample.xls");
    workbook.write(outputStream);
    workbook.close();
    outputStream.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

写入xlsx格式文件

  • 程序示例:
try {
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("Sample sheet");
    Map<String, Object[]> data = new TreeMap<String, Object[]>();
    data.put("1", new Object[]{"ID", "NAME", "LASTNAME"});
    data.put("2", new Object[]{1, "Tom", "Nickson"});
    data.put("3", new Object[]{2, "Sally", "Brooks"});
    data.put("4", new Object[]{3, "Lisa", "Mayer"});
    Set<String> keyset = data.keySet();
    int rownum = 0;
    for (String key : keyset) {
        Row row = sheet.createRow(rownum++);
        Object[] objArr = data.get(key);
        int cellnum = 0;
        for (Object obj : objArr) {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String)
                cell.setCellValue((String) obj);
            else if (obj instanceof Integer)
                cell.setCellValue((Integer) obj);
        }
    }
    FileOutputStream outputStream = new FileOutputStream("sample.xlsx");
    workbook.write(outputStream);
    workbook.close();
    outputStream.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

以上是Java操作Excel文件解析与读写方法的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java操作Excel文件解析与读写方法详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java处理日期的工具类DateUtil

    Java日期处理工具类DateUtil Java中处理日期时间是非常常见的需求,使用Java默认的Date类虽然可以实现,但是其API使用起来不太友好,我们往往需要借助一些工具类来辅助我们处理日期时间。DateUtil是一款常见的日期处理工具类,它封装了很多常用的方法,可以用于日期的计算、格式化、解析等操作,非常方便实用。 导入DateUtil 在使用Dat…

    Java 2023年5月20日
    00
  • springboot学习之Thymeleaf模板引擎及原理介绍

    下面我会详细讲解“springboot学习之Thymeleaf模板引擎及原理介绍”的完整攻略。 一、Thymeleaf模板引擎的介绍 1.1 什么是Thymeleaf? Thymeleaf是一个流行的Java模板引擎,它允许开发人员使用自然模板语言在Web和非Web应用程序中构建HTML,XML,JavaScript,CSS和文本。它被广泛用于Spring …

    Java 2023年6月15日
    00
  • java外卖订餐系统小项目

    下面是”Java外卖订餐系统小项目”的完整攻略。 一、项目背景 本项目为一款基于Java语言开发的外卖订餐系统,目的是通过互联网技术使用户可以在线订餐并进行支付。本项目分前台、后台两部分,前台提供用户订餐、付款等功能,后台提供商家管理、订单管理等功能。 二、项目框架 1. 前台 前台框架采用SpringBoot + Thymeleaf模板引擎,其中重要功能包…

    Java 2023年5月24日
    00
  • Java实现超简单抖音去水印的示例详解

    标题 Java实现超简单抖音去水印的示例详解 简介 随着抖音的流行,越来越多的人想要制作自己的抖音视频,但是制作过程中,会发现视频上有抖音的水印,影响观感。那么如何去掉抖音的水印呢?本文将分享如何使用Java语言实现超简单的抖音去水印功能,让每个人都能轻松制作无水印的抖音视频! 技术方案 为了实现抖音去水印功能,需要使用到以下技术: Java语言 HttpU…

    Java 2023年5月19日
    00
  • java中判断字段真实长度的实例(中文2个字符,英文1个字符)

    下面我将详细讲解如何在Java中判断字段真实长度,区分中文和英文字符长度的处理方式。 问题背景 在开发Web应用程序时,经常需要对表单输入的数据进行长度验证,例如用户名、密码、手机、邮箱等,但是不同的语言字符所占用的字节数是不同的,在判断字符长度时,如果不做特别处理,就会出现问题。 在Java中可以使用字符编码的方式来解决这个问题。 解决方案 1、使用Str…

    Java 2023年5月29日
    00
  • java如何导出insert语句并生成sql脚本

    要导出insert语句并生成sql脚本,我们可以使用Java中的JDBC(Java Database Connectivity)连接数据库并操作数据库。下面是详细的步骤: 加载数据库驱动。 首先需要加载对应的数据库驱动,这里以MySQL数据库为例,使用JDBC驱动名为com.mysql.jdbc.Driver。 Class.forName("com…

    Java 2023年5月20日
    00
  • Java工具类BeanUtils库介绍及实例详解

    Java工具类BeanUtils库介绍及实例详解 什么是BeanUtils BeanUtils 是 Apache 组织下的一个开源 Java 工具类库,它提供了一个简单的 API,以便应用开发人员能够快速地使用反射方式实现 JavaBean 的属性拷贝、生成新对象等操作,尤其适用于对象之间属性值的复制,使得开发者无需编写繁琐的属性赋值代码。BeanUtils…

    Java 2023年5月26日
    00
  • Tomcat如何监控并删除超时Session详解

    要实现Tomcat监控并删除超时的Session,我们需要进行以下步骤: 在tomcat的web.xml文件中添加以下配置: <session-config> <session-timeout>30</session-timeout> </session-config> 该配置表示Session的超时时间为30…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部