亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文教你如何使用Java靈活讀取Excel內容

 更新時間:2023年09月14日 11:22:32   作者:青年老年程序員  
這篇文章主要給大家介紹了關于如何使用Java靈活讀取Excel內容的相關資料,讀取Excel數(shù)據是Java開發(fā)中常見的任務,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下

前言

在日常工作和學習中,我們經常需要從 Excel 文件中讀取數(shù)據。對于少量數(shù)據,手動復制和粘貼可能是可行的,但是對于大量的數(shù)據,這種方法會變得非常低效。在這種情況下,使用 Java 程序自動讀取 Excel 文件中的數(shù)據將是更好的選擇。

本教程將介紹如何使用 Java 程序讀取 Excel 文件中的數(shù)據,包括以下幾個方面:

  • 了解 Excel 文件格式
  • 選擇 Java 的 Excel 文件讀取庫
  • 讀取 Excel 文件中的數(shù)據
  • 處理 Excel 文件中的不同數(shù)據類型
  • 使用 Java 程序導出 Excel 文件

讓我們開始吧!

1、了解 Excel 文件格式

在開始編寫 Java 程序讀取 Excel 文件之前,我們需要了解 Excel 文件格式。Excel 文件是基于 Microsoft 的 OLE2 格式的,這個格式將文件組織成一系列的 "容器" 和 "對象"。Excel 文件的主要容器是 Workbook,它包含一個或多個 Sheet。每個 Sheet 包含一組行和列,這些行和列組成了一個二維的單元格數(shù)組。每個單元格可以包含文本、數(shù)字、日期、布爾值等不同的數(shù)據類型。

2、選擇 Java 的 Excel 文件讀取庫

在 Java 中,有多個庫可以用于讀取 Excel 文件。這些庫包括 Apache POI、JExcelApi、EasyXLS、JXL 等。在本教程中,我們將使用 Apache POI 庫。

Apache POI 是一個 Java API,用于操作 Microsoft 文檔格式,包括 Word、Excel 和 PowerPoint。它提供了一組 Java 類,可以用于創(chuàng)建、讀取和修改 Microsoft 文檔。

3、讀取 Excel 文件中的數(shù)據

在本節(jié)中,我們將演示如何使用 Apache POI 庫讀取 Excel 文件中的數(shù)據。

在開始之前,我們需要將 Apache POI 庫添加到項目的依賴中。您可以通過 Maven 或 Gradle 等構建工具將它們添加到項目中。

以下是 Maven 項目的 pom.xml 文件中添加 Apache POI 庫的示例代碼:

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

以下是 Gradle 項目的 build.gradle 文件中添加 Apache POI 庫的示例代碼:

dependencies {
    implementation 'org.apache.poi:poi:4.1.2'
}

接下來,我們將演示如何使用 Apache POI 庫讀取 Excel 文件中的數(shù)據。

首先,我們需要創(chuàng)建一個 Workbook 對象,該對象表示整個 Excel 文件。在 Apache POI 中,Workbook 對象有三種不同的類型:HSSFWorkbook 表示一個 .xls 文件,XSSFWorkbook 表示一個 .xlsx 文件,SXSSFWorkbook 表示一個大型 .xlsx 文件。我們可以使用 WorkbookFactory.create() 方法根據文件的類型創(chuàng)建一個 Workbook 對象。以下是創(chuàng)建一個 XSSFWorkbook 對象的示例代碼:

FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx"));
Workbook workbook = WorkbookFactory.create(file);

接下來,我們可以獲取一個 Sheet 對象,該對象表示 Excel 文件中的一個工作表。在 Apache POI 中,Sheet 對象由 Workbook 對象的 getSheet() 方法返回。以下是獲取名為 "Sheet1" 的 Sheet 對象的示例代碼:

Sheet sheet = workbook.getSheet("Sheet1");

一旦我們獲取了 Sheet 對象,我們就可以遍歷其中的每一行和每一列,以讀取其中的單元格數(shù)據。以下是遍歷 Sheet 對象中的所有單元格并輸出單元格值的示例代碼:

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 STRING:
                System.out.print(cell.getStringCellValue() + "\t");
                break;
            case NUMERIC:
                System.out.print(cell.getNumericCellValue() + "\t");
                break;
            case BOOLEAN:
                System.out.print(cell.getBooleanCellValue() + "\t");
                break;
            default:
                System.out.print("\t");
        }
    }
    System.out.println();
}

上述代碼中,我們使用了一個嵌套的迭代器來遍歷每一行和每一列。在每個單元格中,我們使用 switch 語句根據不同的數(shù)據類型執(zhí)行不同的操作。

4、處理 Excel 文件中的不同數(shù)據類型

在 Excel 文件中,單元格可以包含不同的數(shù)據類型,包括字符串、數(shù)字、日期和布爾值等。當我們讀取單元格中的數(shù)據時,我們需要知道單元格中的數(shù)據類型,以正確地處理它們。

在 Apache POI 中,我們可以使用 Cell.getCellType() 方法獲取單元格的數(shù)據類型。該方法返回 CellType 枚舉類型的值,可以使用 switch 語句根據不同的枚舉值執(zhí)行不同的操作。

以下是使用 switch 語句處理不同數(shù)據類型的示例代碼:

switch (cell.getCellType()) {
    case STRING:
        System.out.print(cell.getStringCellValue() + "\t");
        break;
    case NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            System.out.print(cell.getDateCellValue() + "\t");
        } else {
            System.out.print(cell.getNumericCellValue() + "\t");
        }
        break;
    case BOOLEAN:
        System.out.print(cell.getBooleanCellValue() + "\t");
        break;
    default:
        System.out.print("\t");
}

在上述示例代碼中,我們首先檢查單元格的數(shù)據類型是否為字符串。如果是字符串,我們使用 getStringCellValue() 方法獲取字符串值。如果單元格的數(shù)據類型為數(shù)字,我們還需要檢查單元格是否包含日期。如果是日期,我們使用 getDateCellValue() 方法獲取日期值,否則我們使用 getNumericCellValue() 方法獲取數(shù)字值。

5、使用 Java 程序導出 Excel 文件

除了讀取 Excel 文件中的數(shù)據外,我們還可以使用 Java 程序創(chuàng)建和導出 Excel 文件。Apache POI 提供了 HSSFWorkbook 和 XSSFWorkbook 兩個類,用于創(chuàng)建和操作 Excel 文件。

HSSFWorkbook 類用于操作舊版的 .xls 格式的 Excel 文件,而 XSSFWorkbook 類用于操作新版的 .xlsx 格式的 Excel 文件。我們可以根據需要選擇合適的類來創(chuàng)建和導出 Excel 文件。

以下是創(chuàng)建和導出 Excel 文件的一般步驟:

  • 創(chuàng)建一個 Workbook 對象,表示整個 Excel 文件。
  • 創(chuàng)建一個 Sheet 對象,表示 Excel 文件中的一個工作表。
  • 創(chuàng)建 Row 和 Cell 對象,表示 Excel 文件中的行和列。
  • 為每個單元格設置數(shù)據和樣式。
  • 將 Workbook 對象寫入文件或輸出流中。

下面,讓我們來看一些示例代碼,演示如何使用 Java 程序創(chuàng)建和導出 Excel 文件。

  • 創(chuàng)建一個 XSSFWorkbook 對象

以下是創(chuàng)建一個 XSSFWorkbook 對象的示例代碼:

Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
  • 創(chuàng)建行和單元格

以下是創(chuàng)建行和單元格的示例代碼:

Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
  • 設置單元格樣式

在 Excel 文件中,我們可以為單元格設置不同的樣式,包括字體、顏色、對齊方式等。以下是設置單元格樣式的示例代碼:

CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
cell.setCellStyle(style);

在上述示例代碼中,我們首先使用 createCellStyle() 方法創(chuàng)建一個單元格樣式對象。然后,我們使用 createFont() 方法創(chuàng)建一個字體對象,并設置其屬性。最后,我們將樣式應用于單元格。

  • 導出 Excel 文件

導出 Excel 文件時,我們可以將 Workbook 對象寫入文件或輸出流中。以下是將 Workbook 對象寫入文件的示例代碼:

FileOutputStream fileOut = new FileOutputStream("path/to/excel/file.xlsx");
workbook.write(fileOut);
fileOut.close();

在上述示例代碼中,我們首先使用 FileOutputStream 類創(chuàng)建一個文件輸出流對象。然后,我們使用 write() 方法將 Workbook 對象寫入文件中。最后,我們關閉文件輸出流。

除了寫入文件,我們還可以將 Workbook 對象輸出到網絡流中,以便在瀏覽器中下載 Excel 文件。以下是將 Workbook 對象輸出到網絡流中的示例代碼:

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"excel_file.xlsx\"");
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.close();

在上述示例代碼中,我們首先設置 HTTP 響應的內容類型和文件名。然后,我們使用 getOutputStream() 方法獲取網絡輸出流對象。最后,我們使用 write() 方法將 Workbook 對象寫入網絡流中,并關閉輸出流。

完整示例代碼

下面是一個完整的示例代碼,演示如何使用 Java 程序讀取和導出 Excel 文件:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtils {
    public static void readExcel(String fileName) throws IOException {
        // 創(chuàng)建文件輸入流
        FileInputStream fileInputStream = new FileInputStream(new File(fileName));
        // 創(chuàng)建工作簿對象
        Workbook workbook = WorkbookFactory.create(fileInputStream);
        // 獲取第一個工作表
        Sheet sheet = workbook.getSheetAt(0);
        // 遍歷工作表中的所有行和單元格
        for (Row row : sheet) {
            for (Cell cell : row) {
                // 根據單元格的類型讀取數(shù)據
                switch (cell.getCellType()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;
                    case FORMULA:
                        System.out.print(cell.getCellFormula() + "\t");
                        break;
                    case BLANK:
                        System.out.print("\t");
                        break;
                    default:
                        System.out.print("\t");
                }
            }
            System.out.println();
        }
        // 關閉文件輸入流
        fileInputStream.close();
    }
    public static void writeExcel(String fileName) throws IOException {
        // 創(chuàng)建工作簿對象
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        // 創(chuàng)建行和單元格
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, World!");
        // 設置單元格樣式
        CellStyle style = workbook.createCellStyle();
        Font font = workbook.createFont();
        font.setBold(true);
        style.setFont(font);
        cell.setCellStyle(style);
        // 導出 Excel 文件
        FileOutputStream fileOut = new FileOutputStream(fileName);
        workbook.write(fileOut);
        fileOut.close();
    }
}

使用該類,我們可以方便地讀取和導出 Excel 文件,如下所示:

public static void main(String[] args) throws IOException {
    String fileName = "path/to/excel/file.xlsx";
    // 讀取 Excel 文件
    ExcelUtils.readExcel(fileName);
    // 導出 Excel 文件
    ExcelUtils.writeExcel(fileName);
}

6、結論

本文介紹了如何使用 Java 程序靈活讀取和導出 Excel 文件。我們首先介紹了 Apache POI 庫,它是 Java 操作 Office 文檔的一個強大的工具。然后,我們演示了如何使用 POI 庫讀取 Excel 文件,并解釋了如何根據單元如何設置單元格樣式。最后,我們提供了一個完整的示例代碼,演示了如何使用 ExcelUtils 類來讀取和導出 Excel 文件。

Java 程序讀取和導出 Excel 文件是一項非常實用的技能,尤其是在需要處理大量數(shù)據的項目中。使用 Apache POI 庫,我們可以方便地讀取和寫入 Excel 文件,這可以大大提高我們的工作效率。

在實際應用中,我們需要根據具體的需求來選擇讀取和寫入 Excel 文件的方法,以達到最好的效果。

參考文獻

  • Apache POI 官方文檔. (??https://poi.apache.org/??)

總結

到此這篇關于使用Java靈活讀取Excel內容的文章就介紹到這了,更多相關Java讀取Excel內容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • spring的UnexpectedRollbackException事務嵌套示例解析

    spring的UnexpectedRollbackException事務嵌套示例解析

    這篇文章主要為大家介紹了spring的UnexpectedRollbackException事務嵌套示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 一文詳解Spring?Boot可以同時處理多少請求

    一文詳解Spring?Boot可以同時處理多少請求

    SpringBoot是一個流行的Java開發(fā)框架,它被廣泛用于構建Web應用程序,但是,開發(fā)人員通常會擔心它的性能問題,特別是在高負載條件下,Spring?Boot能夠同時處理多少請求是一個重要的問題,在本文中,我們將討論SpringBoot的請求處理能力,并介紹如何提高性能
    2023-10-10
  • Java實現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    Java實現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    這篇文章主要介紹了Java實現(xiàn)AES/CBC/PKCS7Padding加解密的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • MyBatis解決Update動態(tài)SQL逗號的問題

    MyBatis解決Update動態(tài)SQL逗號的問題

    這篇文章主要介紹了MyBatis解決Update動態(tài)SQL逗號的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Quarkus中filter過濾器跨域cors問題解決方案

    Quarkus中filter過濾器跨域cors問題解決方案

    這篇文章主要為大家介紹了Quarkus中filter過濾器跨域cors問題的解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • Java日常練習題,每天進步一點點(8)

    Java日常練習題,每天進步一點點(8)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java普通項目讀取不到resources目錄下資源文件的解決辦法

    java普通項目讀取不到resources目錄下資源文件的解決辦法

    這篇文章主要給大家介紹了關于java普通項目讀取不到resources目錄下資源文件的解決辦法,Web項目中應該經常有這樣的需求,在maven項目的resources目錄下放一些文件,比如一些配置文件,資源文件等,需要的朋友可以參考下
    2023-09-09
  • Quarkus集成Dubbo服務Rpc遠程通訊框架整合

    Quarkus集成Dubbo服務Rpc遠程通訊框架整合

    這篇文章主要為大家介紹了Quarkus集成Dubbo服務Rpc遠程通訊框架的整合,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • SpringBoot起步依賴和自動配置基本介紹

    SpringBoot起步依賴和自動配置基本介紹

    這篇文章主要介紹了SpringBoot起步依賴和自動配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • MyBatis-Plus與PageHelper依賴的jsqlparser庫沖突

    MyBatis-Plus與PageHelper依賴的jsqlparser庫沖突

    在升級SpringBoot到3.x版本的同時,升級MyBatis-Plus后發(fā)現(xiàn)PageHelper無法使用,原因是MyBatis-Plus和PageHelper都依賴jsqlparser庫,且PageHelper要求特定版本的jsqlparser,解決方法是在項目中排除這兩個庫的jsqlparser依賴,直接引用jsqlparser4.7版本
    2024-10-10

最新評論