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; } }