天天看點

使用POI來格式化Cell單元格樣式

來源:http://www.hxstrive.com/article/6.htm

在實際工作中避免不了要導出EXCEL,導出的同時可能需要進行字型調整、合并、對其等。常見的java Excel導出工具有JXL和POI。通過一個執行個體示範怎樣通過POI設定Excel單元格的邊框、字型、顔色、大小、下劃線、合并、對齊方式。希望對你能夠有幫助。

運作後的效果圖如下:

Java代碼如下:

package my.excel;

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.CellStyle;

import org.apache.poi.ss.usermodel.Font;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.ss.util.CellRangeAddress;

import org.apache.poi.xssf.usermodel.XSSFCellStyle;

import org.apache.poi.xssf.usermodel.XSSFColor;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CellFormatExcel {

public static void main(String[] args) {

try {

// 建立Excel表格工作簿

Workbook wb = new XSSFWorkbook();

Sheet sheet = wb.createSheet("表格單元格格式化");

//============================

// 設定單元格的字型

//============================

Row ztRow = sheet.createRow((short)0);

Cell ztCell = ztRow.createCell(0);

ztCell.setCellValue("中國");

// 建立單元格樣式對象

XSSFCellStyle ztStyle = (XSSFCellStyle) wb.createCellStyle();

// 建立字型對象

Font ztFont = wb.createFont();

ztFont.setItalic(true); // 設定字型為斜體字

ztFont.setColor(Font.COLOR_RED); // 将字型設定為“紅色”

ztFont.setFontHeightInPoints((short)22); // 将字型大小設定為18px

ztFont.setFontName("華文行楷"); // 将“華文行楷”字型應用到目前單元格上

ztFont.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE單條下劃線/Font.U_DOUBLE雙條下劃線)

// ztFont.setStrikeout(true); // 是否添加删除線

ztStyle.setFont(ztFont); // 将字型應用到樣式上面

ztCell.setCellStyle(ztStyle); // 樣式應用到該單元格上

//============================

// 設定單元格邊框

//============================

Row borderRow = sheet.createRow(2);

Cell borderCell = borderRow.createCell(1);

borderCell.setCellValue("中國");

// 建立單元格樣式對象

XSSFCellStyle borderStyle = (XSSFCellStyle)wb.createCellStyle();

// 設定單元格邊框樣式

// CellStyle.BORDER_DOUBLE 雙邊線

// CellStyle.BORDER_THIN 細邊線

// CellStyle.BORDER_MEDIUM 中等邊線

// CellStyle.BORDER_DASHED 虛線邊線

// CellStyle.BORDER_HAIR 小圓點虛線邊線

// CellStyle.BORDER_THICK 粗邊線

borderStyle.setBorderBottom(CellStyle.BORDER_THICK);

borderStyle.setBorderTop(CellStyle.BORDER_DASHED);

borderStyle.setBorderLeft(CellStyle.BORDER_DOUBLE);

borderStyle.setBorderRight(CellStyle.BORDER_THIN);

// 設定單元格邊框顔色

borderStyle.setBottomBorderColor(new XSSFColor(java.awt.Color.RED));

borderStyle.setTopBorderColor(new XSSFColor(java.awt.Color.GREEN));

borderStyle.setLeftBorderColor(new XSSFColor(java.awt.Color.BLUE));

borderCell.setCellStyle(borderStyle);

//============================

// 設定單元内容的對齊方式

//============================

Row alignRow = sheet.createRow(4);

Cell alignCell = alignRow.createCell(1);

alignCell.setCellValue("中國");

// 建立單元格樣式對象

XSSFCellStyle alignStyle = (XSSFCellStyle)wb.createCellStyle();

// 設定單元格内容水準對其方式

// XSSFCellStyle.ALIGN_CENTER 居中對齊

// XSSFCellStyle.ALIGN_LEFT 左對齊

// XSSFCellStyle.ALIGN_RIGHT 右對齊

alignStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);

// 設定單元格内容垂直對其方式

// XSSFCellStyle.VERTICAL_TOP 上對齊

// XSSFCellStyle.VERTICAL_CENTER 中對齊

// XSSFCellStyle.VERTICAL_BOTTOM 下對齊

alignStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);

alignCell.setCellStyle(alignStyle);

//============================

// 設定單元格的高度和寬度

//============================

Row sizeRow = sheet.createRow(6);

sizeRow.setHeightInPoints(30); // 設定行的高度

Cell sizeCell = sizeRow.createCell(1);

String sizeCellValue = "《Java程式設計思想》"; // 字元串的長度為10,表示該字元串中有10個字元,忽略中英文

sizeCell.setCellValue(sizeCellValue);

// 設定單元格的長度為sizeCellVlue的長度。而sheet.setColumnWidth使用sizeCellVlue的位元組數

// sizeCellValue.getBytes().length == 16

sheet.setColumnWidth(1, (sizeCellValue.getBytes().length) * 256 );

//============================

// 設定單元格自動換行

//============================

Row wrapRow = sheet.createRow(8);

Cell wrapCell = wrapRow.createCell(2);

wrapCell.setCellValue("寶劍鋒從磨砺出,梅花香自苦寒來");

// 建立單元格樣式對象

XSSFCellStyle wrapStyle = (XSSFCellStyle)wb.createCellStyle();

wrapStyle.setWrapText(true); // 設定單元格内容是否自動換行

wrapCell.setCellStyle(wrapStyle);

//============================

// 合并單元格列

//============================

Row regionRow = sheet.createRow(12);

Cell regionCell = regionRow.createCell(0);

regionCell.setCellValue("寶劍鋒從磨砺出,梅花香自苦寒來");

// 合并第十三行中的A、B、C三列

CellRangeAddress region = new CellRangeAddress(12, 12, 0, 2); // 參數都是從O開始

sheet.addMergedRegion(region);

//============================

// 合并單元格行和列

//============================

Row regionRow2 = sheet.createRow(13);

Cell regionCell2 = regionRow2.createCell(3);

String region2Value = "寶劍鋒從磨砺出,梅花香自苦寒來。"

+ "采得百花成蜜後,為誰辛苦為誰甜。"

+ "操千曲而後曉聲,觀千劍而後識器。"

+ "察己則可以知人,察今則可以知古。";

regionCell2.setCellValue(region2Value);

// 合并第十三行中的A、B、C三列

CellRangeAddress region2 = new CellRangeAddress(13, 17, 3, 7); // 參數都是從O開始

sheet.addMergedRegion(region2);

XSSFCellStyle region2Style = (XSSFCellStyle)wb.createCellStyle();

region2Style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

region2Style.setWrapText(true); // 設定單元格内容是否自動換行

regionCell2.setCellStyle(region2Style);

//============================

// 将Excel檔案寫入到磁盤上

//============================

FileOutputStream is = new FileOutputStream("document/CellFormatExcel.xlsx");

wb.write(is);

is.close();

System.out.println("寫入成功,運作結束!");

} catch(Exception e) {

e.printStackTrace();

}

}

}