springboot整合poi,創建和讀取.xlsx文件,添加合併單元格、邊框以及背景色

最新項目中用到了Excel做配置文件的需求,就想把其記錄下來。

本文用的xssf,適用於excel高版本

步驟如下:

1、添加依賴。

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

2、創建excel文件,添加樣式

	public static void createExcel(String excelName) throws Exception {

		//創建工作簿
		XSSFWorkbook wb = new XSSFWorkbook();
		//創建一個sheet
		XSSFSheet sheet = wb.createSheet();

		// 創建單元格樣式
		XSSFCellStyle style =  wb.createCellStyle();	
		style.setFillForegroundColor((short)4); //設置要添加表格北京顏色
		style.setFillPattern(FillPatternType.SOLID_FOREGROUND); //solid 填充
		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++) { //需要6行表格
		    Row  row =	sheet.createRow(i); //創建行
			for (int j = 0; j < 6; j++) {//需要6列
				row.createCell(j).setCellStyle(style);
			}
		}
		
		
		//合併單元格
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));//合併單元格,cellRangAddress四個參數,第一個起始行,第二終止行,第三個起始列,第四個終止列
		sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 5));
		
		//tian入數據
		XSSFRow row = sheet.getRow(0); //獲取第一行
		row.getCell(1).setCellValue("2018期末考試"); //在第一行中創建一個單元格並賦值
		XSSFRow row1 = sheet.getRow(1); //獲取第二行,爲每一列添加字段
		row1.getCell(1).setCellValue("語文");
		row1.getCell(2).setCellValue("數學");
		row1.getCell(3).setCellValue("英語");
		row1.getCell(4).setCellValue("物理");
		row1.getCell(5).setCellValue("化學");
		XSSFRow row2 = sheet.getRow(2); //獲取第三行
		row2.getCell(0).setCellValue("張三");
		XSSFRow row3 = sheet.getRow(3); //獲取第四行
		row3.getCell(0).setCellValue("張三");
		XSSFRow row4 = sheet.getRow(4); //獲取第五行
		row4.getCell(0).setCellValue("張三");
		XSSFRow row5 = sheet.getRow(5); //獲取第五行
		row5.getCell(0).setCellValue("張三");
		//將數據寫入文件
		FileOutputStream out = new FileOutputStream(excelName);
		wb.write(out);

	}

執行輸出結果

3、讀取excel,獲取科目列表,就可以發現目錄處於當前sheet的第二行,並且從第二列至第六列

    public static void readExcel(String excelName) throws IOException {
        
    	//將文件讀入
    	InputStream in  = new FileInputStream(new File(excelName));
   	    //創建工作簿
    	XSSFWorkbook wb = new XSSFWorkbook(in); 
    	//讀取第一個sheet
    	Sheet sheet = wb.getSheetAt(0);
    	//獲取第二行
    	Row row = sheet.getRow(1);
    	//循環讀取科目
    	for (int i = 1; i < 6; i++) {
			
			System.out.println(row.getCell(i));
		}
    }

輸出結果:

至此,全部結束!

 

 

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