国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 基于Apache POI實現(xiàn)Excel讀寫操作

這篇具有很好參考價值的文章主要介紹了Java 基于Apache POI實現(xiàn)Excel讀寫操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

實踐環(huán)境

Win10

Java JDK1.8

代碼實現(xiàn)

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.shouke</groupId>
    <artifactId>example</artifactId>
    <version>1.0</version>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <poi.ooxml.version>4.1.2</poi.ooxml.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi.ooxml.version}</version>
        </dependency>
    <dependencies>        
</project>

讀取Excel

代碼實現(xiàn)

exmple.xml

Java 基于Apache POI實現(xiàn)Excel讀寫操作

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.util.Iterator;

public class JavaStudy {
    public static void readExcel(String filePath) throws Exception {
        //獲取文件流
        FileInputStream inputStream = new FileInputStream(filePath);

        //1.創(chuàng)建工作簿
        Workbook workbook = new XSSFWorkbook(inputStream);

        //2.得到Sheet表
//        Sheet sheet = workbook.getSheet("Sheet1"); // 通過Sheet名稱獲取
        Sheet sheet = workbook.getSheetAt(0); // 通過索引獲取 //獲取第1個Sheet表

        //3.獲取行
        Row row = sheet.getRow(0); // 獲取第1行 // 注意:行索引從0開始
        System.out.println(sheet.getFirstRowNum()); // 獲取首行(內(nèi)容行)索引  // 輸出:0
        System.out.println(sheet.getLastRowNum()); // 獲取最后行(內(nèi)容行)索引 // 輸出:5

        //4.獲取單元格
        Cell cell = row.getCell(0); // 獲取行的第0個元

        //5.獲取單元格的值
        System.out.println(getValue(cell)); // 輸出:姓名

        System.out.println(row.getFirstCellNum()); // 獲取當前行第一個內(nèi)容單元格索引 // 輸出:0
        System.out.println(row.getLastCellNum()); // 獲取當前行最后內(nèi)容單元格往后下一個單元格的索引 // 輸出:7 // 輸出值為:最后內(nèi)容單元格索引+1

        // 遍歷當前行內(nèi)容化單元格
        // 方法1:
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()) {
            cell = cellIterator.next();
            System.out.println(cell);
        }

        // 方法2:
        row.forEach(currCell -> {
            System.out.print(currCell+", ");
            System.out.println(currCell.getCellType());
        });


        // 遍歷獲取所有內(nèi)容行單元格的值
        for (int rowIndex=0; rowIndex<=sheet.getLastRowNum(); rowIndex++) {
            row = sheet.getRow(rowIndex);
            for(int colIndex=0; colIndex<row.getLastCellNum(); colIndex++) {
                System.out.println(getValue(row.getCell(colIndex)));
            }
        }


        inputStream.close();
    }

    public static Object getValue(Cell cell) {
        //匹配類型數(shù)據(jù)
        Object cellValue = null;
        if (cell != null) { // 單元格未經(jīng)過編輯的情況下,一定為null //cell為null的情況下,對空單元格調用API會導致上述for循環(huán)提前結束
            CellType cellType = cell.getCellType(); // 獲取單元格數(shù)值類型
            switch (cellType) {
                case STRING: //字符串
                    System.out.print("String類型:");
                    cellValue = cell.getStringCellValue();
                    break;
                case BOOLEAN: //布爾類型
                    System.out.print("Boolean類型:");
                    cellValue = cell.getBooleanCellValue();
                    break;
                case BLANK: //空
                    System.out.print("BLANK類型:"); // 填寫值后,請清理掉值,從沒填過值,那么cell=null,合并的單元格被當做一個單元格
                    break;
                case NUMERIC: //數(shù)字(整數(shù)、小數(shù)、日期)
                    System.out.print("NUMERIC類型:");
                    if (DateUtil.isCellDateFormatted(cell)) { //日期
                        System.out.print("日期:");
                        cellValue = cell.getDateCellValue(); // cell.getDateCellValue() 返回Date類型數(shù)據(jù)
                    } else {
                        System.out.print("數(shù)字:");
                        cellValue = cell.getNumericCellValue();
                        System.out.println(1.0E50 == (Double) cellValue);
                    }
                    break;
                case FORMULA:
                    System.out.print("公式類型:");
                    cellValue = cell.getCellFormula();
                    break;
                case ERROR:
                    System.out.print("數(shù)據(jù)類型錯誤");
                    break;
            }
        } else {
            System.out.println("cell為空");
        }
        return cellValue;
    }

    // 測試
    public static void  main(String[] args) {
        try{
            JavaStudy.readExcel("D:\\codePojects\\Study\\src\\main\\resource\\example.xlsx");
        } catch (Exception e) {

        }
    }

}

補充說明

創(chuàng)建工作簿

POI創(chuàng)建工作簿的API有3種:

  • HSSFWorkbook: 此API用于操作Excel 2003及之前的版本(文件擴展名.xls),優(yōu)點是導出速度快,缺點是導出的行數(shù)有局限性,最多為65535行,超出65536條后系統(tǒng)就會報錯。對內(nèi)存消耗比較大,容易造成內(nèi)存溢出(OOM)。

  • XSSFWorkbook: 此API用于操作Excel 2007及往后的版本(文件擴展名.xlsx),優(yōu)點是導出的數(shù)據(jù)行數(shù)突破65535,最大可導出1048576行,缺點導出速度慢,對內(nèi)存消耗比較大,容易造成內(nèi)存溢出(OOM)。

  • SXSSFWorkbook:POI3.8開始,新增此API,是 XSSFWorkbook API的兼容流式擴展,主要解決當使用 XSSFWorkbook 方式導出大數(shù)據(jù)量時,內(nèi)存溢出的問題,支持導出大量的數(shù)據(jù)。其原理就是使用硬盤空間代替內(nèi)存:僅保存最新的數(shù)據(jù)行在內(nèi)存里供查看,在此之前的數(shù)據(jù)行都會被寫入到硬盤里(Windows電腦的話,是寫入到C盤根目錄下的temp文件夾)。被寫入到硬盤里的數(shù)據(jù)行是不可見的/不可訪問的。只有還保存在內(nèi)存里的才可以被訪問到。

XSSFWorkbook API為例,可以通過多種方式來創(chuàng)建工作簿,常見用法如下:

//獲取文件流
FileInputStream inputStream = new FileInputStream(excelFilePath);
//創(chuàng)建工作簿
Workbook workbook = new XSSFWorkbook(inputStream);

// 或者
//創(chuàng)建文件
File file = new File(excelFilePath);
Workbook workbook = new XSSFWorkbook(file);

// 或者
Workbook workbook = new XSSFWorkbook(excelFilePath);
獲取單元格類型
CellType getCellType();

返回類型為CellType,在org.apache.poi.ss.usermodel.CellType中定義,它是一個枚舉類型,源碼如下:

public enum CellType {
    @Internal(
        since = "POI 3.15 beta 3"
    )
    _NONE(-1),
    NUMERIC(0), // // 數(shù)字(整數(shù)、小數(shù)、日期)
    STRING(1),
    FORMULA(2), // 公式,即單元格內(nèi)容通過公式計算出來
    BLANK(3), // 為空//什么時候會存儲空值,取決于所使用的表格軟件
    BOOLEAN(4),
    ERROR(5);

寫入Excel

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class JavaStudy {
    public static void writeExcel(String filePath) throws IOException {
        Workbook workbook = new XSSFWorkbook();
//        Sheet sheet =  workbook.createSheet();
        Sheet sheet = workbook.createSheet("study"); // 創(chuàng)建Sheet時指定Sheet名詞
        Row row = sheet.createRow(0);  // 創(chuàng)建第1行
        Cell firstCell = row.createCell(0); // 創(chuàng)建第1個單元格
        firstCell.setCellValue("hello");  // 設置單元格的值
        Cell secondCell = row.createCell(1); // 創(chuàng)建第2個單元格
        secondCell.setCellValue("shouke");

        row = sheet.createRow(1);   // 創(chuàng)建第2行
        firstCell = row.createCell(0, CellType.STRING);  // 設置單元格的值和類型
        firstCell.setCellValue("你好");
        secondCell = row.createCell(1, CellType.NUMERIC); // 創(chuàng)建第2個單元格
        secondCell.setCellValue(2023);


        FileOutputStream fileOutputStream = new FileOutputStream(filePath); // 如果文件已存在,則覆蓋已有文件
        workbook.write(fileOutputStream);
        fileOutputStream.close();
        workbook.close();
    }

    // 測試
    public static void  main(String[] args) {
        try{
            JavaStudy.writeExcel("D:\\codePojects\\Study\\src\\main\\resource\\result.xlsx");
        } catch (Exception e) {

        }
    }

}

生成Excel文件內(nèi)容如下:

Java 基于Apache POI實現(xiàn)Excel讀寫操作文章來源地址http://www.zghlxwxcb.cn/news/detail-616166.html

到了這里,關于Java 基于Apache POI實現(xiàn)Excel讀寫操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Apache-POI讀寫excel文件

    ApachePOI是用Java編寫的免費開源的跨平臺的JavaAPI,ApachePOI提供API給Java程序對MicrosoftOffice格式檔案讀和寫的功能,其中使用最多的就是使用POI操作Excel文件。 依賴導入: 針對不同的文檔形式來操作的時候會提供相應的一些類 HSSF - 提供讀寫Microsoft Excel XLS格式檔案的功能 XSSF -

    2024年02月05日
    瀏覽(25)
  • Apache POI操作Excel文件

    ????????Apache POI是用Java編寫的免費開源的跨平臺的Java API,Apache POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能,其中使用最多的就是使用 POI操作Excel文件 。 POI結構: 我們使用:XSSF - 提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能 POI操作Excel表格封裝了幾個核心

    2024年02月10日
    瀏覽(25)
  • Apache POI 操作Excel常用方法

    Apache POI 操作Excel常用方法

    一、Java使用Apache POI導出excel 二、Apache POI 操作Excel常用方法 三、Apache poi 拆分單元格并賦值 四、使用easypoi模板方法導出excel 五、Apache poi給excel單元格添加下拉框或數(shù)據(jù)驗證 POI提供了HSSF、XSSF以及SXSSF三種方式操作Excel。 HSSF:Excel97-2003版本,擴展名為.xls。一個sheet最大行數(shù)6

    2024年02月09日
    瀏覽(24)
  • 使用POI實現(xiàn)JAVA操作Excel文件

    使用POI實現(xiàn)JAVA操作Excel文件

    https://poi.apache.org/components/index.html xls最大支持65536行、256列 xlsx最大支持1048576行、16384列 poi 操作xls poi-ooml操作xlsx 優(yōu)點:過程中寫入緩存,不操作磁盤,最后再一次性導入磁盤,速度快+ 缺點:但是只能寫入65535條數(shù)據(jù),超過就會報異常 優(yōu)點:可以寫較大數(shù)據(jù)量(超過655135條)

    2024年02月14日
    瀏覽(20)
  • hutool poi、apache poi實現(xiàn)導入導出以及解析excel

    hutool poi、apache poi實現(xiàn)導入導出以及解析excel

    一、前言 看了例子之后后續(xù)需要更加深入學習或者更多理解其他API的話,建議看官方文檔。hutool項目是中國人維護的,有中文文檔,閱讀起來很方便。apache poi比較底層一點,可以更加自由去二次開發(fā)自己所需的功能。 hutool官方文檔 hutool官方gitee apache poi官方文檔 二、基于

    2024年02月09日
    瀏覽(25)
  • Apache Poi 實現(xiàn)Excel多級聯(lián)動下拉框

    Apache Poi 實現(xiàn)Excel多級聯(lián)動下拉框

    由于最近做的功能,需要將接口返回的數(shù)據(jù)列表,輸出到excel中,以供后續(xù)導入,且網(wǎng)上現(xiàn)有的封裝,使用起來都較為麻煩,故參考已有做法封裝了工具類。 使用apache poi實現(xiàn)excel聯(lián)動下拉框思路 創(chuàng)建隱藏單元格,存儲下拉數(shù)據(jù) 創(chuàng)建名稱管理器 使用indirect表達式進行聯(lián)動 添加

    2024年02月11日
    瀏覽(31)
  • Apache POI實現(xiàn)Excel導入讀取數(shù)據(jù)和寫入數(shù)據(jù)并導出

    Apache POI POI介紹 Apache POI是用Java編寫的免費開源的跨平臺的Java API,Apache POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能,其中使用最多的就是使用POI操作Excel文件。 maven坐標: POI結構: 入門案例 ExcelTest .java文件 從Excel文件讀取數(shù)據(jù)

    2024年02月12日
    瀏覽(33)
  • JAVA操作Excel之POI

    JAVA操作Excel之POI

    POI提供API給JAVA程序對Microsoft Office格式檔案讀和寫的功能 基本功能如下: HSSF – 提供讀寫Excel格式(03)xls文件 XSSF – 提供讀寫Excel OOXML格式(07)xlsx文件 HWPF – 提供讀寫Word格式 HSLF – 提供讀寫PowerPoint格式 HDGF – 提供讀寫Visio格式 【注】03版本最多65535行,07版本的沒有限制

    2024年02月06日
    瀏覽(20)
  • Apache POI 導出Excel報表

    Apache POI 導出Excel報表

    大家好我是蘇麟 , 今天聊聊Apache POI . 介紹 Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。簡單來說就是,我們可以使用 POI 在 Java 程序中對Miscrosoft Office各種文件進行讀寫操作。 一般情況下,POI 都是用于操作 Excel 文件。 官網(wǎng) :?Apache POI - the Java API for Microsoft Do

    2024年01月17日
    瀏覽(24)
  • Apache POI 以及 導出Excel表

    Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。簡單來說就是,我們可以使用 POI 在 Java 程序中對Miscrosoft Office各種文件進行讀寫操作。 一般情況下,POI 都是用于操作 Excel 文件。 導依賴 將數(shù)據(jù)寫入Excel文件 讀取Excel文件數(shù)據(jù) 學習

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包