黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java讀取xlsx文件的方法

Java讀取xlsx文件的方法

更新時間:2022-12-09 11:28:32 來源:動力節(jié)點 瀏覽3031次

在本文中,我們將學習如何從 java 代碼讀取和寫入 excel 文件 (.xlsx)。由于 JDK 不提供直接的 API 來讀寫 XLSX 文件,我們將不得不依賴第三方庫來完成這項工作。幸運的是,有很多庫可供我們使用,比如可以使用Apache POI。

為什么選擇 Apache?

Apache POI 是一種流行的 API,它 允許程序員使用 Java 程序創(chuàng)建、修改和顯示 MS Office 文件。它是由 Apache 軟件基金會開發(fā)和分發(fā)的開源庫,用于使用 Java 程序設(shè)計或修改 Microsoft Office 文件。

不僅是excel文件,POI還能做很多事情:

XSSF (XML SpreadSheet Format) – 用于讀寫 Open Office XML (XLSX) 格式的文件。

HSSF (可怕的電子表格格式)——用于讀取和寫入 Microsoft Excel (XLS) 格式的文件。

HWPF (Horrible Word Processor Format) – 讀寫 Microsoft Word 97 (DOC) 格式文件。

HSMF (Horrible Stupid Mail Format)——Microsoft Outlook MSG 文件的純 Java 實現(xiàn)

HDGF (可怕的圖表格式)——Microsoft Visio 二進制文件的第一個純 Java 實現(xiàn)之一。

HPSF (可怕的屬性集格式)——用于從 Microsoft Office 文件中讀取“文檔摘要”信息。

HSLF (可怕的幻燈片布局格式)——Microsoft PowerPoint 文件的純 Java 實現(xiàn)。

HPBF (可怕的 PuBlisher 格式)——Apache 的 Microsoft Publisher 文件的純 Java 實現(xiàn)。

DDF (可怕的繪圖格式)——用于解碼 Microsoft Office 繪圖格式的 Apache POI 包。

Apache POI 入門

以下步驟將指導您完成 excel(.XLSX) 文件的讀寫。

1.創(chuàng)建一個Spring Boot應(yīng)用

您可以從創(chuàng)建它https://start.spring.io/或使用 IDE 創(chuàng)建應(yīng)用程序,我們將隨時添加依賴項。

2.添加必要的依賴

打開 pom.xml,然后添加以下依賴項:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.11-beta2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11-beta2</version>
</dependency>

如果您不使用 Maven,則將以下 JAR 文件添加到您的 Java 程序的類路徑中

poi-3.11-beta2.jar

commons-codec-1.9.jar

poi-ooxml-3.11-beta2.jar

poi-ooxml-schemas-3.11-beta2.jar

xmlbeans-2.6.0.jar

stax-api-1.0.1.jar

3.如何在java中讀取Excel文件(XLSX)

我們將閱讀的內(nèi)容:

在java中讀取XLSX文件的方法:

public static void readXLSX() {
                File file  = new File("/home/auriga/Downloads/Read.xlsx");
                try {
                        FileInputStream fis = new FileInputStream(file);
                        // finds the workbook instance for xlsx file
                        XSSFWorkbook myWorkBook =  new XSSFWorkbook(fis);
                        // returns the first sheet
                        XSSFSheet mysheet = myWorkBook.getSheetAt(0);
                        Iterator<Row> rowIterator = mysheet.iterator();
                  while(rowIterator.hasNext()) {
                           Row row  = rowIterator.next();
                           // for each row iterate through each column
                           Iterator<Cell> cellIterator = row.cellIterator();
                      while (cellIterator.hasNext()) {
                           Cell cell = cellIterator.next();
                           switch (cell.getCellType()) {
                              case Cell.CELL_TYPE_STRING:
                                System.out.print(cell.getStringCellValue() + "\t");
                                break;
                              case Cell.CELL_TYPE_NUMERIC:
                                System.out.print(cell.getNumericCellValue() + "\t");
                                break;
                            }
                      }
                      System.out.println("");
                  }
            }catch(Exception e) {
                 e.printStackTrace();
         }
}

前兩行很容易理解,它們是從系統(tǒng)讀取文件,主要代碼從第四行開始,我們傳遞一個二進制輸入流來創(chuàng)建一個XSSFWorkBook類的實例,它代表一個 Excel 工作簿。

下一行給了我們一個工作表,我們從那里開始迭代每一行,然后是每一列。單元格代表工作表中的每個塊。這是我們讀取或?qū)懭霐?shù)據(jù)的地方。

單元格可以是任何類型,例如字符串、數(shù)字、布爾值等,因此我們需要在讀取之前檢查單元格的類型,因為我們有一個 switch case,它通過調(diào)用 getStringValue() 在讀取特定單元格值之前檢查類型, getNumericValue() 等

這就是您可以在 java 中讀取 XLSX 文件的確切方式。

4.如何寫入XLSX文件

寫作也類似于閱讀,我創(chuàng)建了另一種寫入 XLSX 文件的方法。工作簿和工作表類將保持不變。

寫入XLSX文件的方法:

public static void writeXLSX() {
                File file  = new File("/home/auriga/Downloads/Read.xlsx");
                try {
                        FileInputStream fis = new FileInputStream(file);
                        // finds the workbook instance for xlsx file
                        XSSFWorkbook myWorkBook =  new XSSFWorkbook(fis);
                        // returns the first sheet
                        XSSFSheet mysheet = myWorkBook.getSheetAt(0);
                        Map<String, Object[]> data = new HashMap<String,Object[]>();
                        data.put("1", new Object[]{"User 4",13});
                        data.put("2", new Object[]{"User 5",14});
                        data.put("3", new Object[]{"USer 6",15});
                        Set<String> rows = data.keySet();
                        int rownum = mysheet.getLastRowNum();
                        for(String key : rows) {
                                  // Creating a new Row in existing XLSX sheet
                                  Row row = mysheet.createRow(++rownum);
                                  Object [] objArr = data.get(key);
                                  int cellnum = 0;
                                  for (Object obj : objArr) {
                                            Cell cell = row.createCell(cellnum++);
                                            if (obj instanceof String) {
                                                   cell.setCellValue((String) obj);
                                            } else if (obj instanceof Boolean) {
                                                   cell.setCellValue((Boolean) obj);
                                            } else if (obj instanceof Date) {
                                                   cell.setCellValue((Date) obj);
                                            } else if (obj instanceof Integer) {
                                                   cell.setCellValue((Integer) obj);
                                            }
                                 }
                        }
                        // open an OutputStream to save written data into XLSX file
                        FileOutputStream os = new FileOutputStream(file);
                        myWorkBook.write(os);
                        System.out.println("Writing on XLSX file Finished ...");
                }catch(Exception e) {
             e.printStackTrace();
                }
}

我們已經(jīng)創(chuàng)建了一個地圖來存儲數(shù)據(jù),我們需要將其寫入 excel 文件。然后迭代地圖,并開始借助 setCellValue 方法插入值,在此之前我們需要知道最后編輯的行號和單元格值的類型。

最后,我們需要打開一個輸出流來將寫入的數(shù)據(jù)保存到 XLSX 文件中。

輸出:

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 中国一级特黄真人毛片免 | 99re国产 | 成人综合小说 | 成人欧美网站免费 | 精品一区视频 | 一级 黄 色 毛片 | 曰批全过程免费视频网址 | 欧美日韩高清在线观看一区二区 | 亚洲丁香婷婷综合久久小说 | 黄色综合网 | 黄色a级片免费 | 天天夜碰日日摸日日澡 | 国产二区视频在线观看 | 天天操天天干天天干 | 国产特黄1级毛片 | 国产青青草 | 国产高清啪啪 | 最近的免费中文字幕视频 | 成人国产第一区在线观看 | 国产在线精品人成导航 | 黄色毛片免费看 | 亚洲国产高清一区二区三区 | 中文国产成人精品久久一区 | 亚洲一区欧美二区 | 天天草综合网 | 免费的黄色片 | 国产第一页浮力影院-欢迎你 | 色豆豆永久免费网站 | 日日摸夜夜添夜夜添人人爽 | 激情网婷婷 | 成人免费在线观看网站 | 成人免费一区二区三区在线观看 | 一个人看的www在线播放 | 黄色影院在线观看 | 久久精品一区二区国产 | 黄色片a| 日韩欧美视频一区二区 | 欧美日本视频在线观看 | 一级毛片完整免费版 | 91精品国产综合久久青草 | 亚洲精品第四页中文字幕 |