IntelliJ IDEA環境下 POI讀寫Exel文件

    最近做的一個小項目,需要讀取exel文件中的數值,用Java(emmm,因爲我用java比較熟練)寫算法進行計算後,再將處理得出的結果寫到exel表中。
    所以就把目標瞄準在POI的學習。

首先,最基本的就是把依賴添加進pom文件中去:

        <!--poi-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.14</version>
        </dependency>
        <!--ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.14</version>
        </dependency>
    讀exel文件代碼如下,我的文件是.xlsm結尾的,所以用的是XSSF方式。如果是 .xls 結尾的文件,則用HSSF方式(即把XSSF部分改爲HSSF就可以了)。
    注意要操作的.xlsm文件放在src/main/resources目錄下,當然也可以直接寫它的絕對路徑。
public void readInfo() throws Exception{
        //Excel文件
        XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(ResourceUtils.getFile("classpath:財務信息.xlsm")));
        //取工作表
        XSSFSheet sheet = wb.getSheetAt(0);

        //循環讀出每條記錄,第0行爲標題行,故從下標爲1的行開始取數值
        for(int i = 1; i <= sheet.getLastRowNum();i++ ){
            XSSFRow row = sheet.getRow(i);
            XSSFCell codeCell = row.getCell(0);
            codeCell.setCellType(XSSFCell.CELL_TYPE_STRING); //設置單元格格式爲String,否則無法用字符串接收一個將數字格式的cell
            String code = codeCell.getStringCellValue();
            Date date = row.getCell(1).getDateCellValue();  //單元格爲date格式
            Double income = row.getCell(2).getNumericValue();  //單元格爲數字類型
        }
寫exel文件:
public void writeExel() throws Exception{
        String excelFileName = "classpath:財務報表.xlsm";// 文件名

        String sheetName = "第一季度財務報表";// 工作表名

        XSSFWorkbook wb = new XSSFWorkbook();
        XSSFSheet sheet = wb.createSheet(sheetName);

        // 循環寫入每條收入記錄的主碼和盈利額
        for (int r = 1; r < 5; r++)
        {
            XSSFRow row = sheet.createRow(r);

            XSSFCell codeCell = row.createCell(0);

            codeCell.setCellValue(r);

            XSSFCell profitCell1 = row.createCell(1);

            profitCell1.setCellValue(500 * r);

        }

        FileOutputStream fileOut = new FileOutputStream(excelFileName);

        // 將workbook寫到輸出流中
        wb.write(fileOut);
        fileOut.flush();
        fileOut.close();
    }

本篇文章只作爲一個簡單的示例,完整例子應該包含有數據的計算,但由於比較複雜,我就不把其他代碼貼出來了。我們只探討單純的POI讀寫操作。

參考文章:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章