大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

Java讀取xlsx文件的方法

更新時間:2022-12-09 11:28:32 來源:動力節點 瀏覽3010次

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

為什么選擇 Apache?

Apache POI 是一種流行的 API,它 允許程序員使用 Java 程序創建、修改和顯示 MS Office 文件。它是由 Apache 軟件基金會開發和分發的開源庫,用于使用 Java 程序設計或修改 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 實現

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

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

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

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

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

Apache POI 入門

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

1.創建一個Spring Boot應用

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

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)

我們將閱讀的內容:

在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();
         }
}

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

下一行給了我們一個工作表,我們從那里開始迭代每一行,然后是每一列。單元格代表工作表中的每個塊。這是我們讀取或寫入數據的地方。

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

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

4.如何寫入XLSX文件

寫作也類似于閱讀,我創建了另一種寫入 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();
                }
}

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

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

輸出:

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 破外女出血一级毛片 | 欧美午夜不卡 | 欧美第一视频 | 日日夜夜操视频 | 亚洲成人在线观看视频 | 欧美亚洲另类视频 | 狠狠躁夜夜躁人人爽天天段 | 卡通动漫亚洲综合 | 久久99热这里只有精品7 | 男人的影院 | 永久久久免费浮力影院 | 91手机视频在线 | 天天干天天射天天爽 | 老司机永久免费视频 | 国产大片91精品免费观看不卡 | 97免费在线观看 | 五月伊人 | 日韩女同视频 | 亚洲综合一区二区三区四区 | 久久免费看片 | 亚洲欧洲精品视频在线观看 | 免费精品一区二区三区在线观看 | 国产高清美女一级a毛片久久 | 国产二区三区毛片 | 九九热视频在线播放 | 一级特黄国产高清毛片97看片 | 在线播放性xxx欧美 在线播放亚洲 | 中文字幕久热精品视频免费 | 欧美国产日韩一区二区三区 | 久久久久综合中文字幕 | 亚洲 欧美 精品 中文第三 | 5g影院天天5g天天爽精品 | 中国女人精69xxx| 久久久久中文 | 国产精品成人免费观看 | 亚洲欧美在线一区 | 日本在线不卡免费视频一区 | 日日摸夜夜夜夜夜添 | 四虎成人精品在永久在线观看 | 九九热这里都是精品 | 久久的爱久久的你 |