java批量导入导出文件的实例分享(兼容xls,xlsx)

Java批量导入导出文件的实例分享

本文将介绍如何在Java中批量导入和导出文件,支持xls和xlsx格式的文件。采用了Apache的POI库。

需求分析

我们需要完成的功能是实现Java程序批量导入和导出xls/xlsx文件。

导入功能要求:

  • 支持xls和xlsx格式的文件;
  • 将文件中的数据读取到Java程序中,进行处理。

导出功能要求:

  • 支持xls和xlsx格式的文件;
  • 将Java程序中的数据导出到文件中。

导入文件

使用POI库可以很方便地实现Excel文件的读取和写入。以下示例将演示如何读取Excel文件中的数据。

// 导入所需的包
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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.xssf.usermodel.XSSFWorkbook;

/**
 * 读取Excel文件中的数据
 */
public class ExcelReadExample {
    public static void main(String[] args) {
        try {
            // 读取Excel文件
            String fileName = "data.xls";
            File file = new File(fileName);
            FileInputStream inputStream = new FileInputStream(file);

            // 判断文件类型,创建不同的工作簿
            boolean isXlsx = fileName.endsWith("xlsx");
            XSSFWorkbook xssfWorkbook = null;
            HSSFWorkbook hssfWorkbook = null;
            if (isXlsx) {
                xssfWorkbook = new XSSFWorkbook(inputStream);
            } else {
                hssfWorkbook = new HSSFWorkbook(inputStream);
            }

            // 获取Excel文件中的第一个Sheet
            Sheet sheet = null;
            if (isXlsx) {
                sheet = xssfWorkbook.getSheetAt(0);
            } else {
                sheet = hssfWorkbook.getSheetAt(0);
            }
            if (sheet == null) {
                System.out.println("Sheet not found");
                return;
            }

            // 遍历Sheet中的所有行和单元格
            for (Row row : sheet) {
                for (Cell cell : row) {
                    // 根据单元格类型获取单元格中的数据
                    switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.print(cell.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.print(cell.getStringCellValue());
                            break;
                        default:
                            System.out.print(" ");
                    }
                    System.out.print("\t");
                }
                System.out.println();
            }

            // 关闭文件输入流
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在以上示例中,我们使用了FileInputStream来读取Excel文件,根据文件类型创建不同的工作簿,然后遍历工作簿中的所有行和单元格,根据单元格类型获取单元格中的数据。

导出文件

以下示例将演示如何将Java程序中的数据导出到Excel文件中。

// 导入所需的包
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
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.xssf.usermodel.XSSFWorkbook;

/**
 * 将数据写入Excel文件
 */
public class ExcelWriteExample {
    public static void main(String[] args) {
        try {
            // 创建工作簿和Sheet
            String fileName = "data.xls";
            boolean isXlsx = fileName.endsWith("xlsx");
            XSSFWorkbook xssfWorkbook = null;
            HSSFWorkbook hssfWorkbook = null;
            if (isXlsx) {
                xssfWorkbook = new XSSFWorkbook();
            } else {
                hssfWorkbook = new HSSFWorkbook();
            }
            Sheet sheet = isXlsx ? xssfWorkbook.createSheet() : hssfWorkbook.createSheet();

            // 创建数据行和单元格
            Row row = sheet.createRow(0);
            Cell cell = row.createCell(0);
            cell.setCellValue("Employee Name");
            cell = row.createCell(1);
            cell.setCellValue("Salary");

            row = sheet.createRow(1);
            cell = row.createCell(0);
            cell.setCellValue("Tom");
            cell = row.createCell(1);
            cell.setCellValue(50000);

            row = sheet.createRow(2);
            cell = row.createCell(0);
            cell.setCellValue("Jerry");
            cell = row.createCell(1);
            cell.setCellValue(60000);

            // 保存Excel文件
            FileOutputStream outputStream = new FileOutputStream(fileName);
            if (isXlsx) {
                xssfWorkbook.write(outputStream);
            } else {
                hssfWorkbook.write(outputStream);
            }
            outputStream.close();

            System.out.println("File saved!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在以上示例中,我们创建了工作簿和Sheet,然后创建数据行和单元格,最后保存Excel文件。

总结

本文介绍了如何在Java程序中批量导入和导出Excel文件,采用了Apache的POI库。通过以上示例,我们学习了如何读取Excel文件中的数据,以及如何将Java程序中的数据导出到Excel文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java批量导入导出文件的实例分享(兼容xls,xlsx) - Python技术站

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

相关文章

  • Java实现经典游戏飞机大战-I的示例代码

    非常感谢您对“Java实现经典游戏飞机大战-I的示例代码”的关注。 下面,我将为大家详细讲解如何实现这个示例代码,并提供两个示例说明。 1. 初步了解示例代码 首先,您需要了解示例代码的基本结构和所包含的类: Main 类:程序的启动入口,用于初始化并启动游戏。 GameFrame 类:游戏窗口,包含了游戏的整个界面,处理用户的输入和绘制游戏元素。 Game…

    Java 2023年5月23日
    00
  • 如何验证Tomcat Gzip配置是否生效的方法

    当我们在Tomcat中配置gzip压缩后,我们需要一些方法来验证我们的配置是否生效。下面提供了两种方法来验证Tomcat Gzip配置是否生效的方法: 方法1:检查HTTP请求头中是否包含“Content-Encoding: gzip” 验证Tomcat Gzip配置是否生效的方法之一是检查HTTP响应头是否包含“Content-Encoding: gzip…

    Java 2023年5月19日
    00
  • .net socket客户端实例代码分享

    在这里我将详细介绍“.net socket客户端实例代码分享”的完整攻略,并提供两条示例代码。 什么是.net socket客户端? .net socket客户端是一种基于Socket技术的网络编程模型,使用.net framework中的Socket类来建立与服务器的连接,进行数据传输等操作。它常用于需要高效、快速、灵活地进行网络通讯的应用场景。 .net…

    Java 2023年5月19日
    00
  • 利用Java获取文件名、类名、方法名和行号的方法小结

    下面我来详细讲解一下“利用Java获取文件名、类名、方法名和行号的方法小结”的完整攻略。 获取文件名、类名、方法名和行号攻略 在Java开发中,我们有时候需要获取当前文件名、类名、方法名和行号等信息,以便于进行调试和日志输出等操作。下面是具体的获取方法: 获取文件名 获取当前文件名可以使用File类中的方法,具体代码如下: File file = new F…

    Java 2023年5月31日
    00
  • Springmvc加ajax实现上传文件并页面局部刷新

    首先,上传文件是指将文件从客户端传输到服务器端,而Springmvc是一种轻量级的mvc框架。在本文中,将会介绍如何利用Springmvc和ajax实现文件上传和页面局部刷新。 一、环境准备 实现文件上传需要用到Springmvc和Spring的MultipartResolver组件,因此需要在pom.xml文件中引入相关依赖。 <!– Spring…

    Java 2023年6月15日
    00
  • 浅谈Java响应式系统

    浅谈Java响应式系统 什么是Java响应式系统 Java响应式系统是一种基于反应式编程(Reactive Programming,简称RP)思想的编程模式,它使用异步流来构建可靠性高,性能较好的应用程序。在Java响应式系统中,数据流可以被看作是一系列的事件或者消息,应用程序可以通过订阅这些事件或者消息来进行处理。Java响应式系统常常被用于处理大规模数据…

    Java 2023年5月20日
    00
  • JSP response对象实现文件下载的两种方式

    我会为您详细讲解“JSP response对象实现文件下载的两种方式”的完整攻略。 下载文件是Web开发中非常常见的功能之一。在JSP中,我们可以使用response对象来实现文件下载的功能。具体来说,实现文件下载可以采用两种方式: 1. 使用response的OutputStream方式 使用response的OutputStream方式的基本流程如下: …

    Java 2023年6月15日
    00
  • JAVA中StackOverflowError错误的解决

    下面是“JAVA中StackOverflowError错误的解决”的完整攻略。 什么是StackOverflowError错误? 在Java程序中,如果方法被递归调用时,方法栈会不断地往系统栈内添加方法栈帧。如果方法递归层数过多,方法栈会撑满,此时就会发生StackOverflowError错误,如下所示: Exception in thread &quot…

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