1. 程式人生 > 實用技巧 >POI實現excel檔案的匯出和匯入

POI實現excel檔案的匯出和匯入

POI實現excel檔案的匯出和匯入

最近在專案中有使用到excel的匯入和匯出

話不多說,上教程

依賴的匯入

 <!--poi的核心依賴-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.15</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>

excel的匯出步驟

1、建立一個工作簿XSSFWorkbook

2、建立工作表sheet

3、對其進行格式的調整

4、資料的寫入

5、輸出到指定檔案位置

匯出excel的簡單實現

	 /**
     * 建立表格
     */
    public static void createExcel(String filePath) throws IOException {
        //1、建立一個工作簿
        XSSFWorkbook wb = new XSSFWorkbook();

        //2、建立一個工作表sheet
        XSSFSheet sheet = wb.createSheet("欄位表");

        //3、建立單元格樣式
        XSSFCellStyle style = wb.createCellStyle();
        style.setFillForegroundColor(IndexedColors.WHITE.getIndex());//設定背景顏色
        style.setFillPattern(FillPatternType.NO_FILL); //填充樣式 有全部填充 有小點填充  有大點填充

        //設定文字的格式
        style.setAlignment(XSSFCellStyle.ALIGN_CENTER);//文字水平居中
        style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//檔案垂直居中
        style.setBorderBottom(BorderStyle.THIN);//邊框加黑
        style.setBorderLeft(BorderStyle.THIN);//邊框加黑
        style.setBorderRight(BorderStyle.THIN);//邊框加黑
        style.setBorderTop(BorderStyle.THIN);//邊框加黑

        //建立單元格
        for (int i = 0; i < 6; i++) {//建立的行數
            Row row = sheet.createRow(i);//建立行
            for (int j = 0; j < 6; j++) {//每行的列數
                row.createCell(j).setCellStyle(style);
            }
        }

        //合併單元格  引數說明 引數1:合併的開始行  引數2:合併的結束行  引數3:合併的開始單元格  引數4:合併結束的單元格
        sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));
        sheet.addMergedRegion(new CellRangeAddress(0,0,1,5));

        //4、插入資料
        XSSFRow row = sheet.getRow(0);//獲取第一行
        row.getCell(1).setCellValue("這裡是表名");//獲取第一行的第一個單元格,並且插入資料
        XSSFRow row1 = sheet.getRow(1);
        row1.getCell(1).setCellValue("欄位1");
        row1.getCell(2).setCellValue("欄位2");
        row1.getCell(3).setCellValue("欄位3");
        row1.getCell(4).setCellValue("欄位4");
        row1.getCell(5).setCellValue("欄位5");
        XSSFRow row2 = sheet.getRow(2);
        row2.getCell(0).setCellValue("資料行1");

        XSSFRow row3 = sheet.getRow(3);
        row3.getCell(0).setCellValue("資料行2");

        XSSFRow row4 = sheet.getRow(4);
        row4.getCell(0).setCellValue("資料行3");

        XSSFRow row5 = sheet.getRow(5);
        row5.getCell(0).setCellValue("資料行4");

        //5、輸出檔案位置
        FileOutputStream fos = new FileOutputStream(filePath);
        wb.write(fos);
        System.out.println("檔案生成成功");
    }

excel的匯入步驟

1、建立工作簿

2、遍歷工作表

3、遍歷行

4、設定讀取資料的型別

5、讀取資料

資料匯入的簡單實現

/**
 * 讀取表格
 */
public static void readExcel(String fileName) throws IOException {
    InputStream in = new FileInputStream(new File(fileName));
    //1、建立工作簿
    XSSFWorkbook wb = new XSSFWorkbook(in);
    //2、獲取表的數量並且遍歷
    int totalSheet = wb.getNumberOfSheets();//獲取共有多少個sheet
    for (int i = 0; i < totalSheet; i++) {//遍歷
        XSSFSheet sheet = wb.getSheetAt(i);
        int totalRow = sheet.getPhysicalNumberOfRows();//總行數
        //3、遍歷行
        for (int j = 0; j < totalRow; j++) {
            XSSFRow row = sheet.getRow(j);
            int totalCell = row.getPhysicalNumberOfCells();//每行的單元格個數
            //4、遍歷單元格
            for (int k = 0; k < totalCell; k++) {
                Cell cell = row.getCell(k);
                //設定單元格的型別為String型別
                cell.setCellType(CellType.STRING);
                System.out.print(cell.getStringCellValue()+"--");
            }
            System.out.println();
        }
    }

}

這只是簡單的入門案例,當然,還可以結合物件進行讀取以及輸出,整合springBoot還可以使用自定義註解進行需要的欄位進行註解開發。