黑馬 - poi Excel

 

 

 

 

 

 

 

 

 

 

 

 3.poi入門操做apache

  3.1 搭建環境數組

 1 <dependency>
 2       <groupId>org.apache.poi</groupId>
 3       <artifactId>poi</artifactId>
 4       <version>4.1.0</version>
 5   </dependency>
 6   <!-- poi2007相應依賴座標 -->
 7   <dependency>
 8       <groupId>org.apache.poi</groupId>
 9       <artifactId>poi-ooxml</artifactId>
10       <version>4.1.0</version>
11   </dependency>
12   <dependency>
13       <groupId>org.apache.poi</groupId>
14       <artifactId>poi-ooxml-schemas</artifactId>
15       <version>4.1.0</version>
16   </dependency>

 

 3.4基本操做app

 

public class App {
    public static void main(String[] args) {
        //1.建立工做簿
        Workbook wb = new XSSFWorkbook();//2007版
        //2.建立sheet
        Sheet sheet = wb.createSheet("test");
        //3文件流
        try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test.xlsx")) {
            wb.write(fos);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Demo2 設置單元格樣式ide

視頻連接工具

 1 /**
 2  * Demo2設置單元格樣式
 3  */
 4 public class Demo2 {
 5     public static void main(String[] args) {
 6         //1.建立工做簿
 7         Workbook wb = new XSSFWorkbook();//2007版
 8         //2.建立sheet
 9         Sheet sheet = wb.createSheet("test");
10         //建立行對象,參數:索引從0開始
11         Row row = sheet.createRow(2);
12         //建立單元格對象,索引從0開始
13         Cell cell = row.createCell(2);
14         cell.setCellValue("才高八斗");
15 
16         //樣式處理
17         //建立樣式對象
18         CellStyle style = wb.createCellStyle();
19         style.setBorderTop(BorderStyle.THIN);//上邊框
20         style.setBorderRight(BorderStyle.THIN);//右邊框
21         style.setBorderBottom(BorderStyle.THIN);//下邊框
22         style.setBorderLeft(BorderStyle.THIN);//左邊框
23 
24         //建立字體對象
25         Font font = wb.createFont();
26         font.setFontName("華文行楷");
27         font.setFontHeightInPoints((short) 28);//設置字號
28         style.setFont(font);
29 
30         //行高和列寬
31         row.setHeightInPoints(50);//設置行高
32         sheet.setColumnWidth(2, 31 * 256);//第三列,設置列寬須要乘以256
33 
34         //設置水平居中
35         style.setAlignment(HorizontalAlignment.CENTER);
36         //設置垂直居中
37         style.setVerticalAlignment(VerticalAlignment.CENTER);
38 
39         //向單元格設置樣式
40         cell.setCellStyle(style);
41 
42         //3文件流
43         try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test3.xlsx")) {
44             wb.write(fos);
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48 
49     }
50 }

 Demo3 在Excel中添加圖片字體

視頻連接ui

 1 /**
 2  * Demo3在Excel中添加圖片
 3  */
 4 public class Demo1 {
 5     public static void main(String[] args) throws IOException {
 6         //1.建立工做簿
 7         Workbook wb = new XSSFWorkbook();//2007版
 8         //2.建立sheet
 9         Sheet sheet = wb.createSheet("test");
10 
11         //------------------------------------------------------------
12         //1.讀取圖片流
13         FileInputStream fis = new FileInputStream("E:\\poi\\merry.jpg");
14 
15         //2.轉化二進制數組
16         byte[] bytes = IOUtils.toByteArray(fis);
17         fis.read(bytes);
18         //3.向poi內存中添加一張圖片,返回圖片在圖片集合中的索引
19         int index = ((XSSFWorkbook) wb).addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
20         //4.繪製圖片工具類
21         CreationHelper helper = wb.getCreationHelper();
22         //5.建立一個繪圖對象
23         Drawing<?> drawing = sheet.createDrawingPatriarch();
24         //6.建立錨點,設置圖片座標
25         ClientAnchor anchor = helper.createClientAnchor();
26         //設置圖片起始位置
27         anchor.setRow1(1);
28         anchor.setCol1(1);
29         ////設置圖片結束位置
30         anchor.setRow2(15);
31         anchor.setCol2(15);
32         //7.繪製圖片
33         Picture picture = drawing.createPicture(anchor, index);//圖片位置,圖片的索引
34 //        picture.resize();//自適應渲染圖片
35         //------------------------------------------------------------
36         //3文件流
37         try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test4.xlsx")) {
38             wb.write(fos);
39         } catch (IOException e) {
40             e.printStackTrace();
41         }
42 
43     }
44 }

 加載Excelspa

/**
 * Demo4讀取Excel並解析
 * sheet.getLastRowNum():獲取最後一行的索引值
 * row.getLastCellNum():獲取最後一個單元格的號碼
 */
public class Demo4 {
    public static void main(String[] args) throws IOException {
        //1.根據Excel文件建立工做簿
        Workbook wb = new XSSFWorkbook("E:\\poi\\demo2.xlsx");
        //2.獲取Sheet
        Sheet sheet = wb.getSheetAt(0);
        //3.獲取sheet中的每一行和每個單元格
        for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
            Row row = sheet.getRow(rowNum);//根據索引獲取每一行
            if (row == null){
                continue;
            }
            StringBuilder sb = new StringBuilder();
            for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
                //根據索引獲取每個單元格
                Cell cell = row.getCell(cellNum);
                if(cell == null){
                    continue;
                }
                //獲取每個單元格的內容
                Object value = getCellValue(cell);
                sb.append(value).append("-");
            }
            System.out.println(sb.toString());
        }

    }

    private static Object getCellValue(Cell cell) {

        //1.獲取單元格的屬性類型
        CellType cellType = cell.getCellType();
        //2.根據單元格的類型獲取時間
        Object value = null;
        switch (cellType) {
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    //日期格式
                    value = cell.getDateCellValue();
                } else {
                    value = cell.getNumericCellValue();
                }
                break;
            case STRING:
                value = cell.getStringCellValue();
                break;
            case BOOLEAN:
                value = cell.getBooleanCellValue();
                break;
            case FORMULA://公式類型
                value = cell.getCellFormula();
                break;
            default:
                break;
        }

        return value;
    }
}
相關文章
相關標籤/搜索