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

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

Java讀取xlsx文件的方法

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

在本文中,我們將學(xué)習(xí)如何從 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 二進(jìn)制文件的第一個純 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 入門

以下步驟將指導(dǎo)您完成 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)讀取文件,主要代碼從第四行開始,我們傳遞一個二進(jìn)制輸入流來創(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 文件中。

輸出:

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产中文字幕乱人伦在线观看 | 一本一本大道香蕉久在线精品 | 狠狠操免费视频 | 婷婷在线视频 | 欧美特黄视频在线观看 | 成年黄网站在线观看免费 | 色站视频 | 亚洲激情久久 | 亚洲欧美国产日本 | 免费成年人视频网站 | 在线精品国产第一页 | 激情免费视频 | 欧美超强性xxxxx | 免费观看欧美一区二区三区 | 高h喷水荡肉爽文1v1 | 777欧美午夜精品影院 | 天天爽爽 | 免费一级欧美大片在线观看 | 国产一区精品 | 欧美成人亚洲 | 亚洲日本1区2区3区二区 | 一本大道视频 | 躁天天躁中文字幕在线 | 日韩精品欧美视频 | 亚洲 欧美 字幕 一区 在线 | 2022天天操 | 久草手机视频在线观看 | 国产日韩中文字幕 | 398av| 真人一级一级特黄高清毛片 | 精品无人区麻豆乱码1区2区 | 黄色长视频 | 三级黄色小视频 | 精品国产一区二区三区麻豆小说 | 一级片免| 多人性激烈的欧美三级视频 | 久久成人亚洲香蕉草草 | 特黄特色一级aa毛片免费观看 | 2022国产精品最新在线 | 丁香网五月 | 欧美日韩国产一区二区三区 |