1. 程式人生 > >POI Excel 08 讀取重寫Excel,單元格中使用\n換行符

POI Excel 08 讀取重寫Excel,單元格中使用\n換行符

@author YHC

讀取Excel和重寫Excel

//初始化輸入流
		InputStream inp = new FileInputStream("D:/workbook.xls");
		//建立讀取對應的檔案生成物件
	    Workbook wb = WorkbookFactory.create(inp);
	    //得到第0個工作薄
	    Sheet sheet = wb.getSheetAt(0);
	    //得到第3行 小標從0開始,所以是2
	    Row row = sheet.getRow(2);
	    //得到第三行第4個單元格 4D 小標從0開始所以是三
	    Cell cell = row.getCell(3);
	    //檢視該單元格是否定義,如果沒有定義返回NULL
	    //,否則返回一個邏輯上的單元格,如果沒有則建立
	    //??為什麼需要先判斷為空,因為如果該單元格已經
	    //存在而且已經定義,如果你在建立,原來的單元格
	    //將會被你重新建立的單元格覆蓋,這樣做可以節約
	    //你的空間,因為沒有重新建立物件
	    if (cell == null)
	        cell = row.createCell(3);
	    //設定單元格的型別是String字串文字型別
	    cell.setCellType(Cell.CELL_TYPE_STRING);
	    //設定值
	    cell.setCellValue("a test");

	    //重新寫如檔案
	    FileOutputStream fileOut = new FileOutputStream("D:/workbook.xls");
	    wb.write(fileOut);
	    fileOut.close();
執行後的效果圖:


單元格中使用\n 換行符:

          //建立Excel
		Workbook wb = new HSSFWorkbook();   //or new XSSFWorkbook();
		//建立工作薄
	    Sheet sheet = wb.createSheet();
        //建立行
	    Row row = sheet.createRow(2);
	    //建立單元格
	    Cell cell = row.createCell(2);
	    //設定單元格中的值 使用有\n換行符
	    cell.setCellValue("Use \n with word wrap on to create a new line");

	    //如果你需要使用換行符,你需要設定
	    //單元格的樣式wrap=true,程式碼如下:
	    CellStyle cs = wb.createCellStyle();
	    cs.setWrapText(true);
	    cell.setCellStyle(cs);

	    //增加行的高度以適應2行文字的高度,設定高度單位(畫素)
	    row.setHeightInPoints((2*sheet.getDefaultRowHeightInPoints()));

	    //調整該列寬度適應內容 
	    sheet.autoSizeColumn((short)2);
        //寫入檔案
	    FileOutputStream fileOut = new FileOutputStream("ooxml-newlines.xlsx");
	    wb.write(fileOut);
	    fileOut.close();
執行後的效果圖:

需要jar包:


以上如果有寫錯誤的地方,請大家指出! thanks!!