最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java編寫簡單的Excel工具類

 更新時間:2024年02月28日 16:24:22   作者:老李筆記  
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫簡單的Excel工具類,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下

Excel工具類

MyExcelUtil.java

package com.asia.common;

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.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class MyExcelUtil {

	// 簡單測試
    public static void main(String[] args) {
		List<List<String>> lists = readExcel("D:\\hao\\工作簿1.xlsx", 0);
        List<List<String>> dataList = new ArrayList<>();
        for (int i = 0; i < lists.size(); i++) {
            dataList.add(lists.get(i));
            System.out.println(lists.get(i));
        }
    }
    
    public static List<List<String>> readExcel(String path, int sheetIndex) {
        List<List<String>> excelDataList = new ArrayList<List<String>>();
        try {
            InputStream inputStream = new FileInputStream(path);
            File file;
            // 通過文件流工廠方式來處理,用來防止NotOLE2FileException
            Workbook workbook = WorkbookFactory.create(inputStream);

            if (inputStream == null || workbook == null) {
                return excelDataList;
            }

            // 讀取Sheet
            Sheet sheet = workbook.getSheetAt(sheetIndex);
            if (sheet == null) {
                return excelDataList;
            }

            // 循環(huán)處理每一行,會讀取到第一行
            int rows = sheet.getPhysicalNumberOfRows();
            int minCells = 0;
            int maxCells = 0;
            // 獲取最小列數(shù)和最大列數(shù),以第一行為準(zhǔn)
            if (rows >= 1) {
                minCells = sheet.getRow(0).getFirstCellNum();
                maxCells = sheet.getRow(0).getLastCellNum();
            }

            for (int i = 0; i < rows; i++) {
                // 得到當(dāng)前行
                Row row = sheet.getRow(i);
                if(null==row) {
                	break;
                }
                List<String> rowList = new ArrayList<String>();
                for (int j = minCells; j < maxCells; j++) {
                    // 每一個單元格
                    Cell cell = row.getCell(j);
                    if (cell == null) {
                        rowList.add("");
                    } else {
                        rowList.add(cell.toString());
                    }
                }
                excelDataList.add(rowList);
            }
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return excelDataList;
    }

    
    public static boolean writeExcel(List<String> title, List<List<String>> data, String sheetName, String filePath){
        if (filePath == null || !filePath.contains(".")) {
            return false;
        }
        String suffix = filePath.substring(filePath.lastIndexOf(".") + 1);

        Workbook workbook = null;

        switch (suffix) {
            case "xls":
                workbook = new HSSFWorkbook();

                break;
            case "xlsx":
                workbook = new XSSFWorkbook();
                break;
            default:
                return false;
        }

        // 在workbook中創(chuàng)建一個sheet對應(yīng)excel中的sheet
        Sheet sheet = workbook.createSheet(sheetName);
        // 在sheet表中添加表頭第0行,老版本的poi對sheet的行列有限制
        Row row = sheet.createRow(0);


        // 創(chuàng)建單元格,設(shè)置表頭
        int titleSize = title.size();
        for (int i = 0; i < titleSize; i++) {
            Cell cell = row.createCell(i);
            cell.setCellValue(title.get(i));
        }

        // 寫入數(shù)據(jù)
        int dataSize = data.size();
        for (int i = 0; i < dataSize; i++) {
            Row row1 = sheet.createRow(i + 1);
            List<String> rowData = data.get(i);
            // 創(chuàng)建單元格設(shè)值
            for (int i1 = 0; i1 < rowData.size(); i1++) {
                row1.createCell(i1).setCellValue(rowData.get(i1));
            }
        }

        File file = new File(filePath);
        if (file.exists()) {
            file.delete();
        }
        try {
            file.createNewFile();
            workbook.write(new FileOutputStream(file));
            workbook.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
}

pom.xml

<dependencies>
		<!--poi相關(guān)依賴-->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>4.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>4.0.1</version>
		</dependency>
		<!--poi相關(guān)依賴end-->
	</dependencies>

到此這篇關(guān)于基于Java編寫簡單的Excel工具類的文章就介紹到這了,更多相關(guān)Java Excel工具類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法

    Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法

    這篇文章主要介紹了Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法的相關(guān)資料,今天使用Eclipse 時出現(xiàn)以上錯誤,本文說明如何更更正,需要的朋友可以參考下
    2016-11-11
  • 使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能

    使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能

    這篇文章主要介紹了如何使用Mybatis-Plus實現(xiàn)對象屬性自動填充功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的朋友們下面隨著小編來一起來學(xué)習(xí)吧
    2024-01-01
  • 1小時快速上手RabbitMQ(簡介及安裝過程)

    1小時快速上手RabbitMQ(簡介及安裝過程)

    RabbitMQ簡稱MQ全稱是Message Queue(消息隊列),是在消息的傳輸過程中保存消息的容器,多用于分布式系統(tǒng)之間進(jìn)行通信,本文給大家講解了RabbitMQ簡介與安裝,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-01-01
  • SpringBoot基于攔截器與ThreadLocal實現(xiàn)用戶登錄校驗

    SpringBoot基于攔截器與ThreadLocal實現(xiàn)用戶登錄校驗

    本文介紹了一種在SpringBoot中實現(xiàn)統(tǒng)一登錄校驗和上下文共享的解決方案,通過使用攔截器、ThreadLocal和自定義工具類,實現(xiàn)了在請求處理過程中優(yōu)雅地獲取當(dāng)前登錄用戶信息,并且避免了在每個Controller方法中重復(fù)編寫校驗代碼,需要的朋友可以參考下
    2025-12-12
  • 簡單了解java集合框架LinkedList使用方法

    簡單了解java集合框架LinkedList使用方法

    這篇文章主要介紹了簡單了解java集合框架LinkedList使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 淺談java中的路徑表示

    淺談java中的路徑表示

    下面小編就為大家?guī)硪黄獪\談java中的路徑表示。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 一篇文章帶你了解Java Stream流

    一篇文章帶你了解Java Stream流

    Stream流是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列。這篇文章主要介紹了Java8新特性Stream流的相關(guān)資料,需要的朋友參考下吧
    2021-08-08
  • Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法

    Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法

    這篇文章主要介紹了Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java鎖機(jī)制Lock用法示例

    Java鎖機(jī)制Lock用法示例

    這篇文章主要介紹了Java鎖機(jī)制Lock用法,結(jié)合具體實例形式分析了Java鎖機(jī)制的相關(guān)上鎖、釋放鎖、隱式鎖、顯式鎖等概念與使用技巧,需要的朋友可以參考下
    2018-08-08
  • java后端http接口流式輸出到前端的方法示例

    java后端http接口流式輸出到前端的方法示例

    這篇文章主要介紹了java后端http接口流式輸出到前端的相關(guān)資料,對比SseEmitter與WebFlux兩種實現(xiàn)方式,通過實例代碼詳細(xì)分析了其適用場景及優(yōu)劣,需要的朋友可以參考下
    2025-09-09

最新評論

三都| 抚顺县| 汉源县| 安乡县| 合川市| 长沙市| 灵川县| 平武县| 璧山县| 固原市| 蕉岭县| 南城县| 长治县| 雷波县| 栖霞市| 福鼎市| 新竹县| 尉氏县| 珠海市| 西吉县| 神木县| 大洼县| 景德镇市| 西贡区| 新泰市| 图木舒克市| 萨嘎县| 吴桥县| 武胜县| 水富县| 丹凤县| 咸宁市| 汶川县| 酉阳| 南岸区| 盘锦市| 丹棱县| 磐石市| 石柱| 高尔夫| 古丈县|