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

java使用XSSFWorkbook實(shí)現(xiàn)讀寫Excel

 更新時(shí)間:2024年04月20日 08:13:55   作者:那心之所向  
這篇文章主要為大家詳細(xì)介紹了java如何通過使用XSSFWorkbook實(shí)現(xiàn)讀寫Excel功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

寫在最前面

使用的是JAVA POI實(shí)現(xiàn)的導(dǎo)出Excel

POI 提供了對2003版本的Excel的支持 ---- HSSFWorkbook

POI 提供了對2007版本以及更高版本的支持 ---- XSSFWorkbook

引入相關(guān)依賴:

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
 /**
     * 讀取Excel文件的內(nèi)容
     * @param inputStream excel文件,以InputStream的形式傳入
     * @param sheetName sheet名字
     * @return 以List返回excel中內(nèi)容
     */
    public static List<Map<String, String>> readExcel(InputStream inputStream, String sheetName) {

        //定義工作簿
        XSSFWorkbook xssfWorkbook = null;
        try {
            xssfWorkbook = new XSSFWorkbook(inputStream);
        } catch (Exception e) {
            System.out.println("Excel data file cannot be found!");
        }

        //定義工作表
        XSSFSheet xssfSheet;
        if (sheetName.equals("")) {
            // 默認(rèn)取第一個(gè)子表
            xssfSheet = xssfWorkbook.getSheetAt(0);
        } else {
            xssfSheet = xssfWorkbook.getSheet(sheetName);
        }

        List<Map<String, String>> list = new ArrayList<Map<String, String>>();

        //定義行
        //默認(rèn)第一行為標(biāo)題行,index = 0
        XSSFRow titleRow = xssfSheet.getRow(0);

        //循環(huán)取每行的數(shù)據(jù)
        for (int rowIndex = 1; rowIndex < xssfSheet.getPhysicalNumberOfRows(); rowIndex++) {
            XSSFRow xssfRow = xssfSheet.getRow(rowIndex);
            if (xssfRow == null) {
                continue;
            }

            Map<String, String> map = new LinkedHashMap<String, String>();
            //循環(huán)取每個(gè)單元格(cell)的數(shù)據(jù)
            for (int cellIndex = 0; cellIndex < xssfRow.getPhysicalNumberOfCells(); cellIndex++) {
                XSSFCell titleCell = titleRow.getCell(cellIndex);
                XSSFCell xssfCell = xssfRow.getCell(cellIndex);
                map.put(getString(titleCell),getString(xssfCell));
            }
            list.add(map);
        }
        return list;
    }

    /**
     * 把單元格的內(nèi)容轉(zhuǎn)為字符串
     * @param xssfCell 單元格
     * @return 字符串
     */
    public static String getString(XSSFCell xssfCell) {
        if (xssfCell == null) {
            return "";
        }
        if (xssfCell.getCellTypeEnum() == CellType.NUMERIC) {
            return String.valueOf(xssfCell.getNumericCellValue());
        } else if (xssfCell.getCellTypeEnum() == CellType.BOOLEAN) {
            return String.valueOf(xssfCell.getBooleanCellValue());
        } else {
            return xssfCell.getStringCellValue();
        }
    }

    /**
     * 把內(nèi)容寫入Excel
     * @param list 傳入要寫的內(nèi)容,此處以一個(gè)List內(nèi)容為例,先把要寫的內(nèi)容放到一個(gè)list中
     * @param outputStream 把輸出流懟到要寫入的Excel上,準(zhǔn)備往里面寫數(shù)據(jù)
     */
    public static void writeExcel(List<List> list, OutputStream outputStream) {
        //創(chuàng)建工作簿
        XSSFWorkbook xssfWorkbook = null;
        xssfWorkbook = new XSSFWorkbook();

        //創(chuàng)建工作表
        XSSFSheet xssfSheet;
        xssfSheet = xssfWorkbook.createSheet();

        //創(chuàng)建行
        XSSFRow xssfRow;

        //創(chuàng)建列,即單元格Cell
        XSSFCell xssfCell;

        //把List里面的數(shù)據(jù)寫到excel中
        for (int i=0;i<list.size();i++) {
            //從第一行開始寫入
            xssfRow = xssfSheet.createRow(i);
            //創(chuàng)建每個(gè)單元格Cell,即列的數(shù)據(jù)
            List sub_list =list.get(i);
            for (int j=0;j<sub_list.size();j++) {
                xssfCell = xssfRow.createCell(j); //創(chuàng)建單元格
                xssfCell.setCellValue((String)sub_list.get(j)); //設(shè)置單元格內(nèi)容
            }
        }

        //用輸出流寫到excel
        try {
            xssfWorkbook.write(outputStream);
            outputStream.flush();
            outputStream.close();
        }catch (IOException e) {
            e.printStackTrace();
        }

    }

附:把一個(gè)Map中的所有鍵和值分別放到一個(gè)list中,再把這兩個(gè)list整個(gè)放到一個(gè)大的list里面,即 [ [key1,key2,key3...] , [value1,value2,value3...] ]

public static List<List> convertMapToList(Map map) {
        List<List> list = new ArrayList<List>();
        List<String> key_list = new LinkedList<String>();
        List<String> value_list = new LinkedList<String>();

        Set<Entry<String,String>> set = map.entrySet();
        Iterator<Entry<String,String>> iter1 = set.iterator();
        while (iter1.hasNext()) {
            key_list.add(iter1.next().getKey());
        }
        list.add(key_list);

        Collection<String> value = map.values();
        Iterator<String> iter2 = value.iterator();
        while (iter2.hasNext()) {
            value_list.add(iter2.next());
        }
        list.add(value_list);
        return list;
    }

到此這篇關(guān)于java使用XSSFWorkbook實(shí)現(xiàn)讀寫Excel的文章就介紹到這了,更多相關(guān)java XSSFWorkbook讀寫Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring中將Service注入到Servlet中的四種方法

    Spring中將Service注入到Servlet中的四種方法

    在Spring中,如果需要將Service注入到Servlet中,可以通過以下幾種方法實(shí)現(xiàn),Spring本身提供了對Servlet的集成能力,因此可以結(jié)合Spring的依賴注入機(jī)制,將Service類注入到Servlet中,需要的朋友可以參考下
    2025-05-05
  • 解決nacos升級(jí)spring cloud 2020.0無法使用bootstrap.yml的問題

    解決nacos升級(jí)spring cloud 2020.0無法使用bootstrap.yml的問題

    這篇文章主要介紹了解決nacos升級(jí)spring cloud 2020.0無法使用bootstrap.yml的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 深入解析JVM對dll文件和對類的裝載過程

    深入解析JVM對dll文件和對類的裝載過程

    這篇文章主要介紹了JVM對dll文件的裝載和對類的裝載過程,針對Java在Windows下的一些運(yùn)行情況作出講解,需要的朋友可以參考下
    2015-11-11
  • mybatis中string和date的轉(zhuǎn)換方式

    mybatis中string和date的轉(zhuǎn)換方式

    這篇文章主要介紹了mybatis中string和date的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解Java設(shè)計(jì)模式編程中的訪問者模式

    詳解Java設(shè)計(jì)模式編程中的訪問者模式

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中的訪問者模式,訪問者模式的合理利用可以避免項(xiàng)目中出現(xiàn)大量重復(fù)的代碼,需要的朋友可以參考下
    2016-02-02
  • 詳解Spring MVC如何測試Controller(使用springmvc mock測試)

    詳解Spring MVC如何測試Controller(使用springmvc mock測試)

    這篇文章主要介紹了詳解Spring MVC如何測試Controller(使用springmvc mock測試),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java讀取DWG文件的示例詳解

    Java讀取DWG文件的示例詳解

    本文將通過一個(gè)代碼示例,展示如何使用Teigha Java API來讀取DWG文件,并解釋了實(shí)現(xiàn)這一功能所需的關(guān)鍵步驟,包括添加依賴、初始化API、打開文件、處理數(shù)據(jù)和關(guān)閉文件,感興趣的朋友一起看看吧
    2025-06-06
  • java實(shí)現(xiàn)截取PDF指定頁并進(jìn)行圖片格式轉(zhuǎn)換功能

    java實(shí)現(xiàn)截取PDF指定頁并進(jìn)行圖片格式轉(zhuǎn)換功能

    這篇文章主要介紹了java實(shí)現(xiàn)截取PDF指定頁并進(jìn)行圖片格式轉(zhuǎn)換功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法

    SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 詳解Java集合類之HashSet篇

    詳解Java集合類之HashSet篇

    這篇文章主要為大家詳細(xì)介紹一下Java集合類中HashSet的用法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下
    2022-07-07

最新評論

五华县| 潞城市| 亳州市| 霸州市| 调兵山市| 梅河口市| 哈密市| 江津市| 富民县| 灯塔市| 大洼县| 于田县| 庆城县| 旅游| 满城县| 凤阳县| 天柱县| 隆安县| 清镇市| 玉林市| 当阳市| 玉山县| 永德县| 普宁市| 饶河县| 油尖旺区| 凯里市| 武乡县| 临桂县| 安平县| 库车县| 新乡市| 襄垣县| 东海县| 哈密市| 循化| 剑阁县| 铁力市| 宁津县| 轮台县| 兴海县|