Java实现读取及生成Excel文件的方法

生成Excel文件可以使用Apache POI库,读取Excel文件可以使用JXL或者Apache POI库。

使用Apache POI进行Excel文件读取及生成

要使用Apache POI进行Excel文件处理,需要添加以下maven依赖:

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

读取Excel文件

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
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.usermodel.WorkbookFactory;

public class ExcelReader {

    public static void main(String[] args) throws Exception {
        String fileName = "data.xlsx";
        InputStream inputStream = new FileInputStream(fileName);
        Workbook workbook = WorkbookFactory.create(inputStream);

        Sheet sheet = workbook.getSheetAt(0);
        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == CellType.NUMERIC) {
                    System.out.print(cell.getNumericCellValue() + "\t");
                } else if (cell.getCellType() == CellType.STRING) {
                    System.out.print(cell.getStringCellValue() + "\t");
                } else if (cell.getCellType() == CellType.BOOLEAN) {
                    System.out.print(cell.getBooleanCellValue() + "\t");
                }
            }
            System.out.println();
        }
        workbook.close();
    }
}

以上代码是一个简单的读取Excel文件的例子。首先,我们打开文件(即data.xlsx),并根据它创建一个WorkBook实例。sheet是Excel中的一个sheet,可以通过getIndexAt(index)方法获取。对于每行,我们使用一个for循环来遍历单元格。对于不同类型的单元格,我们使用不同的方法来获取其值。

生成Excel文件

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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;

public class ExcelWriter {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        for (int i = 0; i < 10; i++) {
            Row row = sheet.createRow(i);
            for (int j = 0; j < 5; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue(i * j);
            }
        }
        FileOutputStream outputStream = new FileOutputStream("output.xlsx");
        workbook.write(outputStream);
        workbook.close();
    }
}

以上代码是一个生成Excel文件的例子。我们首先创建一个Workbook对象(这里使用XSSFWorkbook,因为我们将要生成一个.xlsx格式的Excel文件)。然后,在工作簿 创建一个新的Excel表单 Sheet。这里我们创建了一个名为"Sheet1"的表单。

之后我们使用循环创建行和列,并在每个单元格中设置一个值。最后,我们将Workbook写入磁盘中。我们使用FileOutputStream输出流将结果写入磁盘,其文件名为"output.xlsx"。

使用JXL进行Excel文件读取及生成

JXL是一个Java库,可用于处理.xls文件。要使用JXL库,必须下载并添加jxl.jar到你的类路径中。

读取Excel文件

import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ExcelReader {
    public static void main(String[] args) throws BiffException, IOException {
        String fileName = "data.xls";
        File file = new File(fileName);

        Workbook workbook = Workbook.getWorkbook(file);
        Sheet sheet = workbook.getSheet(0);

        for (int i = 0; i < sheet.getRows(); i++) {
            for (int j = 0; j < sheet.getColumns(); j++) {
                Cell cell = sheet.getCell(j, i);
                System.out.print(cell.getContents() + "\t");
            }
            System.out.println();
        }
        workbook.close();
    }
}

以上代码读取一个.xls文件。我们创建一个Workbook实例,它将打开给定的.xls文件并将其读入内存。 .getSheet(0)表示Sheet的索引,0表示第一张Sheet。我们使用两个循环来遍历每个单元格。通过getCell(j,i)方法获取第i行,第j列的单元格。然后我们显示单元格的内容。

生成Excel文件

import java.io.File;
import java.io.IOException;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ExcelWriter {

    public static void main(String[] args) throws IOException, WriteException {
        WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
        WritableSheet sheet = workbook.createSheet("Sheet1", 0);
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 5; j++) {
                Label label = new Label(j, i, Integer.toString(i * j));
                sheet.addCell(label);
            }
        }
        workbook.write();
        workbook.close();
    }
}

以上代码实现了一个生成Excel文件的例子。我们首先创建一个WritableWorkbook对象,调用createWorkbook(..)方法创建一个新的workbook对象。然后我们使用createSheet(..)方法创建一个新的worksheet。之后使用嵌套的循环根据行和列创建单元格。调用write()方法将结果写入磁盘,最后关闭workbook对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现读取及生成Excel文件的方法 - Python技术站

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

相关文章

  • Java虚拟机之对象创建过程与类加载机制及双亲委派模型

    Java虚拟机之对象创建过程 Java中的对象在内存中的实现是由Java虚拟机(JVM)负责完成的。对象的创建过程分为三步: 分配内存空间:JVM为对象在堆内存中分配一块连续的内存空间。 初始化对象:JVM为对象的成员变量赋初始值。 调用构造函数:JVM调用对象的构造函数来完成对象的初始化。 例子说明 public class Person { privat…

    Java 2023年5月26日
    00
  • 用 ChatGPT 写代码,效率杠杠的!

    来源:https://www.cnblogs.com/scy251147/p/17242557.html ChatGPT出来好久了,vscode上面由于集成了相关的插件,所以用起来很简单,经过本人深度使用后,发觉其能力的强大之处,在书写单元测试,书写可视化小工具,代码纠错,代码规范,编程辅助方面,极其可靠,而且能识别一些坑并绕过,下面来看看他能干的一些事情吧…

    Java 2023年4月30日
    00
  • java编写的简单移动方块小游戏代码

    下面是详细讲解“java编写的简单移动方块小游戏代码”的完整攻略。 1. 准备工作 在开始编写代码之前,我们需要准备一些工作: 安装JDK:Java Development Kit是Java编程的核心,需要先安装好JDK。可以在JDK官网下载对应平台的JDK安装包,安装完成后需配置环境变量。 安装IDE:IDE(集成开发环境)是编写Java程序的必备工具。常…

    Java 2023年5月23日
    00
  • JavaWeb实现文件上传下载功能实例解析

    JavaWeb实现文件上传下载功能实例解析 一、文件上传 文件上传是指将本地机器上的文件通过网络传输到远程服务器上的过程。在JavaWeb中,可以使用Servlet实现文件上传功能。 在上传文件之前,需要先创建一个表单,让用户选择需要上传的文件。具体操作如下: 在HTML中创建一个表单,指定表单的enctype属性值为”multipart/form-data…

    Java 2023年5月20日
    00
  • 详解Java的MyBatis框架中SQL语句映射部分的编写

    下面是详解Java的MyBatis框架中SQL语句映射部分的编写的攻略: 一、MyBatis框架中SQL语句映射部分的作用 MyBatis框架中的SQL语句映射部分,主要用于将Java中的对象属性映射到数据库表中的列,或将数据库表中的列映射到Java中的对象属性。通过这种映射方式,我们可以将数据库操作的流程自动化,提高开发效率。在MyBatis框架中,SQL…

    Java 2023年5月20日
    00
  • java如何完成输出语句实例详解

    下面是Java如何完成输出语句的攻略: 1. 输出语句的基本格式 Java中的输出语句使用System.out.print()和System.out.println(),其中print()可以输出字符串,并且不换行,println()则会在输出后换行。 下面是输出字符串的基本格式: System.out.print("Hello World&quo…

    Java 2023年5月23日
    00
  • Struts 2 配置Action详解

    Struts 2 配置Action详解 在 Struts 2 中,Action 是一个处理请求的对象,负责接收来自用户的请求,并进行处理。配置 Action 是 Struts 2 中比较重要的一项任务,配置不当会导致程序无法正常工作或者存在安全隐患。本篇文章将详细讲解 Struts 2 中如何配置 Action。 配置 Struts 2 Action 在 S…

    Java 2023年5月20日
    00
  • spring boot 默认异常处理的实现

    Spring Boot 默认的异常处理机制可以根据不同的异常类型,自动返回对应的 HTTP 状态码,同时输出异常信息,帮助我们快速定位错误。 默认情况下,无需显式配置,Spring Boot 就可以捕获控制器方法抛出的异常及一些框架内部异常。当异常被捕获后,Spring Boot 会根据异常类型来自动选择以下处理步骤: 如果是 HTTP 400 错误,返回 …

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