Java通過cellstyle屬性設(shè)置Excel單元格常用樣式的全面總結(jié)講解
前言
最近做了一個導(dǎo)出Excel的功能,導(dǎo)出是個常規(guī)導(dǎo)出,但是拿來模板一看,有一些單元格的樣式設(shè)置,包括合并,背景色,字體等等,畢竟不是常用的東西,需要查閱資料完成,但是搜遍全網(wǎng)沒有一個全面的,工作完成后,我便總結(jié)了一下,能夠應(yīng)對日常開發(fā)使用的Excel樣式設(shè)置屬性。
這里重點總結(jié)生成Excel中對單元格的樣式設(shè)置,不講解如何導(dǎo)出Excel,基本導(dǎo)出很容易。
直接上代碼,按照注釋來看依次是:
首先創(chuàng)建一個工作薄
下面所有的操作都是對這個style對象來設(shè)置的。
// 創(chuàng)建excel工作簿
SXSSFWorkbook wb = new SXSSFWorkbook(getXSSFWorkbook(examPath), 1000);
//獲取樣式
CellStyle style = wb.createCellStyle();1.設(shè)置單元格對齊,屬性使用參照注解
//1、先設(shè)置單元格對齊方式
//水平對齊,一般對齊方式。文本數(shù)據(jù)左對齊。數(shù)字、日期和時間是正確對齊的。布爾類型居中。
style.setAlignment(HorizontalAlignment.GENERAL);
//靠左
style.setAlignment(HorizontalAlignment.LEFT);
// 靠右
style.setAlignment(HorizontalAlignment.RIGHT);
// 居中
style.setAlignment(HorizontalAlignment.CENTER);
// 填充單元格的值,跨越單元格的整個寬度
style.setAlignment(HorizontalAlignment.FILL);
// 水平對齊對齊(左右齊平)。對于每行文本,將單元格中換行文本的每行左右對齊
style.setAlignment(HorizontalAlignment.JUSTIFY);
// 水平對齊在多個單元格中居中
style.setAlignment(HorizontalAlignment.CENTER_SELECTION);
//平鋪。表示單元格中每行文本中的text均勻分布.跨越單元格的寬度,左右外邊距齊平。
style.setAlignment(HorizontalAlignment.DISTRIBUTED);2.設(shè)置單元格垂直對齊,參考注解
//2.此枚舉值指示單元格的垂直對齊類型,即:
//垂直居中對齊
style.setVerticalAlignment(VerticalAlignment.CENTER);
//頂部對齊
style.setVerticalAlignment(VerticalAlignment.TOP);
//底部對齊
style.setVerticalAlignment(VerticalAlignment.BOTTOM);
//對齊。
style.setVerticalAlignment(VerticalAlignment.JUSTIFY);
//分布。
style.setVerticalAlignment(VerticalAlignment.DISTRIBUTED);
3.設(shè)置背景色
//3.設(shè)置背景色
style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
//必須設(shè)置 否則背景色不生效
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);背景色的IndexedColors類中屬性對應(yīng)的具體顏色如下所示:
(1)枚舉值對應(yīng)的顏色

(2)色卡名稱對應(yīng)的顏色
GREY_80_PERCENT
INDIGO
PLUM
BROWN
OLIVE_GREEN
DARK_GREEN
SEA_GREEN
DARK_TEAL
GREY_40_PERCENT
BLUE_GREY
ORANGE
LIGHT_ORANGE
GOLD
LIME
AQUA
LIGHT_BLUE
TAN
LAVENDER
ROSE
PALE_BLUE
LIGHT_YELLOW
LIGHT_GREEN
LIGHT_TURQUOISE
SKY_BLUE
BLUE
DARK_RED
VIOLET
TURQUOISE
YELLOW
PINK
DARK_BLUE
LIGHT_CORNFLOWER_BLUE
ROYAL_BLUE
CORAL
ORCHID
LIGHT_TURQUOISE
LEMON_CHIFFON
PLUM
CORNFLOWER_BLUE
GREY_50_PERCENT
GREY_25_PERCENT
TEAL
VIOLET
DARK_YELLOW
DARK_BLUE
GREEN
DARK_RED
TURQUOISE
PINK
YELLOW
BLUE
BRIGHT_GREEN
RED
WHITE
BLACK
4.設(shè)置字體有關(guān)樣式
基本涵蓋了Excel中對文字常用的操作行為
//4.設(shè)置字體樣式
Font titleFont = wb.createFont();
// 設(shè)置字體的名稱(例如Arial)
titleFont.setFontName("宋體");
// 以1/20點為單位設(shè)置字體高度。
titleFont.setFontHeight((short) 10);
// 設(shè)置是否使用斜體
titleFont.setItalic(true);
// 設(shè)置是否在文本中使用刪除線橫線
titleFont.setStrikeout(true);
//顏色設(shè)置
titleFont.setColor((short) 111);
// 設(shè)置普通、上標(biāo)或下標(biāo)。
titleFont.setTypeOffset((short) 5);
//下劃線
titleFont.setUnderline((byte) 0000);
// 是否加粗
titleFont.setBold(true);
// 設(shè)置字體高度
titleFont.setFontHeightInPoints((short) 12);
style.setFont(titleFont);5.邊框設(shè)置
//5.邊框設(shè)置
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);6.單元格合并操作
合并單元格使用的是CellRangeAddress函數(shù),該函數(shù)源碼在下面,可以清晰看到輸入?yún)?shù)代表什么怎么用,簡單解釋一下就是
X:起始行 Y:結(jié)束行 a:起始列 b:結(jié)束列
這樣就清晰的畫出了一個合并范圍。
// 6.合并單元格
SXSSFSheet sheet = wb.createSheet("測試sheet");
sheet.addMergedRegion(new CellRangeAddress(X, Y, a, b));
//設(shè)置單元格寬度 ,X代表第幾列
sheet.setColumnWidth(X, 20 * 260);public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {
super(firstRow, lastRow, firstCol, lastCol);
if (lastRow < firstRow || lastCol < firstCol) {
throw new IllegalArgumentException("Invalid cell range, having lastRow < firstRow || lastCol < firstCol, " +
"had rows " + lastRow + " >= " + firstRow + " or cells " + lastCol + " >= " + firstCol);
}
}總結(jié)
到此這篇關(guān)于Java通過cellstyle屬性設(shè)置Excel單元格常用樣式的文章就介紹到這了,更多相關(guān)Java設(shè)置Excel單元格常用樣式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Retrofit+Rxjava實現(xiàn)文件上傳和下載功能
這篇文章主要介紹了Retrofit+Rxjava實現(xiàn)文件上傳和下載功能,文中提到了單文件上傳和多文件上傳及相關(guān)參數(shù)的請求,需要的朋友參考下吧2017-11-11
使用eclipse 實現(xiàn)將springboot項目打成jar包
這篇文章主要介紹了使用eclipse 實現(xiàn)將springboot項目打成jar包的流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Springboot接收文件報錯Required request part‘file‘is 
文章總結(jié):在Flutter和Vue項目中遇到文件上傳問題,后端接口Controller定義無誤,但前端通過FormData封裝上傳文件時報錯,通過瀏覽器抓包和PostMan測試,發(fā)現(xiàn)后臺確實可以接收參數(shù),最終通過修改封裝的file為file.raw解決問題,解決了文件上傳不成功的問題2025-12-12
Java-URLDecoder、URLEncoder使用及說明
本文介紹了Java中URLDecoder和URLEncoder類的使用方法,包括編碼和解碼規(guī)則、推薦的編碼方案、解碼器處理非法字符的方法以及URL編碼和解碼的示例2024-12-12
springboot異步處理@NotBlank或@NotNull注釋校驗不生效問題
這篇文章主要介紹了springboot異步處理@NotBlank或@NotNull注釋校驗不生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
JavaWeb項目實現(xiàn)文件上傳動態(tài)顯示進度實例
本篇文章主要介紹了JavaWeb項目實現(xiàn)文件上傳動態(tài)顯示進度實例,具有一定的參考價值,有興趣的可以了解一下。2017-04-04

