Apache POI 第二講之對Excel常見操作

有時候我們在做項目時,有些項目需要生成Microsoft Excel文件格式的報告。有時,甚至希望將Excel文件作爲輸入數據。這是我們需要用到Apache POI 。例如,一個公司開發的應用程序將財務部門需要所有輸出生成自己的Excel。

創建一個時間格式的單元格

1.編寫主方法

public class Demo4 {
    public static void main(String[] args) throws Exception {
        // 定義一個新的工作簿
        Workbook wb = new HSSFWorkbook() ;
        // 創建第一個Sheet頁
        Sheet sheet = wb.createSheet("第一個Sheet頁");  
        // 創建一個行
        Row row = sheet.createRow(0) ;
        // 創建一個單元格,也就是第一列
        Cell cell = row.createCell(0) ;
        // 給單元格設置值
        cell.setCellValue(new Date()) ;

        CreationHelper creationHelper = wb.getCreationHelper() ;
        // 單元格樣式類
        CellStyle cellStyle = wb.createCellStyle() ;
        // 設置時間樣式
        cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-mm-dd hh:mm:ss"));
        cell = row.createCell(1) ; 
        cell.setCellValue(new Date()) ;
        cell.setCellStyle(cellStyle) ;

        // 定義一個輸出流,並指定輸出路徑
        FileOutputStream fileOut = new FileOutputStream("./excel/excel03.xls") ;
        // 生成excel 文件
        wb.write(fileOut) ;
        fileOut.close() ;
    }
}

2.運行
打開本目錄excel下excel03.xls文件,查看結果

這裏寫圖片描述

處理不同內容格式的單元格

1.編寫主方法

public class Demo5 {
    public static void main(String[] args) throws Exception {
        // 定義一個新的工作簿
        Workbook wb = new HSSFWorkbook() ;
        // 創建第一個Sheet頁
        Sheet sheet = wb.createSheet("第一個Sheet頁");  
        // 創建一個行
        Row row = sheet.createRow(0) ;
        // 創建一個單元格,也就是第一列
        Cell cell = row.createCell(0) ;
        // 給單元格設置值
        cell.setCellValue(new Date()) ;
        // 整行
        row.createCell(1).setCellValue(100) ;
        // 布爾類型
        row.createCell(2).setCellValue("字符串") ;
        // 字符串類型
        row.createCell(3).setCellValue(true) ;
        // 常量
        row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC) ;
        // 浮點類型
        row.createCell(5).setCellValue(12.55);
        // 定義一個輸出流,並指定輸出路徑
        FileOutputStream fileOut = new FileOutputStream("./excel/excel04.xls") ;
        // 生成excel 文件
        wb.write(fileOut) ;
        fileOut.close() ;
    }
}

2.運行
打開本目錄excel下excel04.xls文件,查看結果

這裏寫圖片描述

遍歷工作簿的行和列並獲取單元格內容

1.編寫主方法

public class Demo6 {
    public static void main(String[] args) throws Exception {

        //輸入流
        InputStream is = new FileInputStream("./excel/測試.xls") ;
        POIFSFileSystem fs = new POIFSFileSystem(is) ;
        HSSFWorkbook wb = new HSSFWorkbook(fs) ;
        // 獲取第一個Sheet頁
        HSSFSheet hssfSheet = wb.getSheetAt(0) ;
        if(hssfSheet==null) {
            return ;
        }

        //遍歷行 Row
        for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
            HSSFRow hssfRow = hssfSheet.getRow(rowNum) ;
            if(hssfRow==null) {
                continue ;
            }
            //遍歷列 Cell
            for (int cellNum = 0; cellNum <= hssfRow.getLastCellNum(); cellNum++) {
                HSSFCell hssfCell = hssfRow.getCell(cellNum) ;
                if(hssfCell==null) {
                    continue ;
                }
                System.out.print(" "+getValue(hssfCell));
            }
            System.out.println();
        }

    }

    private static String getValue(HSSFCell hssfCell) {
        if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(hssfCell.getBooleanCellValue()) ;
        } else if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
            return String.valueOf(hssfCell.getNumericCellValue()) ;
        } else {
            return String.valueOf(hssfCell.getStringCellValue()) ;
        }
    }
}

2.運行
打開本目錄excel下測試.xls文件

這裏寫圖片描述

運行結果

這裏寫圖片描述

文本提取

1.編寫主方法

public class Demo7 {
    public static void main(String[] args) throws Exception {

        //輸入流
        InputStream is = new FileInputStream("./excel/測試.xls") ;
        POIFSFileSystem fs = new POIFSFileSystem(is) ;
        HSSFWorkbook wb = new HSSFWorkbook(fs) ;
        // 獲取第一個Sheet頁

        ExcelExtractor excelExtractor = new ExcelExtractor(wb) ;
        System.out.println(excelExtractor.getText());

    }
}

2.運行
打開本目錄excel下測試.xls文件
這裏寫圖片描述

運行結果

這裏寫圖片描述

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