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

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

Java讀取xlsx文件的方法

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

在本文中,我們將學習如何從 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 文件中。

輸出:

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲国产成人久久午夜 | 五月天婷婷缴情五月免费观看 | 狠狠大日本亚洲香蕉亚洲 | 五月婷婷色视频 | 国产美女在线免费观看 | 99re6这里有精品热视频在线 | 国产精品高清全国免费观看 | 午夜精品久久久久久久99热 | 国产女人精品性视频 | 玖玖在线 | 色吧综合网| 国产com| 欧美在线视频在线观看 | 亚洲综合日韩在线亚洲欧美专区 | 成人在线视频国产 | 色综合色狠狠天天综合色hd | 久久夜夜操 | 91精品91久久久久久 | 久久久久亚洲 | 视频国产在线 | 欧美成人午夜视频在线观看 | 欧美在线日韩 | 日本一级特大毛片 | 成年人一级黄色片 | 久久久网 | 99re只有精品| 米奇影院7777 | 26uuu在线| 久久久欧美综合久久久久 | 国产欧美一区二区精品性色 | 亚洲专区区免费 | 精品日本亚洲一区二区三区 | 十八女人毛片 | 国产欧美日本亚洲精品五区 | 日韩免费在线视频观看 | 成人黄色片视频 | 91亚洲精品国产自在现线 | 亚欧美综合| 国产女主播喷出白浆视频 | 一级特黄性色生活片一区二区 | 国产91福利在线精品剧情尤物 |