Java通過(guò)cellstyle屬性設(shè)置Excel單元格常用樣式的全面總結(jié)講解
前言
最近做了一個(gè)導(dǎo)出Excel的功能,導(dǎo)出是個(gè)常規(guī)導(dǎo)出,但是拿來(lái)模板一看,有一些單元格的樣式設(shè)置,包括合并,背景色,字體等等,畢竟不是常用的東西,需要查閱資料完成,但是搜遍全網(wǎng)沒(méi)有一個(gè)全面的,工作完成后,我便總結(jié)了一下,能夠應(yīng)對(duì)日常開(kāi)發(fā)使用的Excel樣式設(shè)置屬性。
這里重點(diǎn)總結(jié)生成Excel中對(duì)單元格的樣式設(shè)置,不講解如何導(dǎo)出Excel,基本導(dǎo)出很容易。
直接上代碼,按照注釋來(lái)看依次是:
首先創(chuàng)建一個(gè)工作薄
下面所有的操作都是對(duì)這個(gè)style對(duì)象來(lái)設(shè)置的。
// 創(chuàng)建excel工作簿 SXSSFWorkbook wb = new SXSSFWorkbook(getXSSFWorkbook(examPath), 1000); //獲取樣式 CellStyle style = wb.createCellStyle();
1.設(shè)置單元格對(duì)齊,屬性使用參照注解
//1、先設(shè)置單元格對(duì)齊方式 //水平對(duì)齊,一般對(duì)齊方式。文本數(shù)據(jù)左對(duì)齊。數(shù)字、日期和時(shí)間是正確對(duì)齊的。布爾類(lèi)型居中。 style.setAlignment(HorizontalAlignment.GENERAL); //靠左 style.setAlignment(HorizontalAlignment.LEFT); // 靠右 style.setAlignment(HorizontalAlignment.RIGHT); // 居中 style.setAlignment(HorizontalAlignment.CENTER); // 填充單元格的值,跨越單元格的整個(gè)寬度 style.setAlignment(HorizontalAlignment.FILL); // 水平對(duì)齊對(duì)齊(左右齊平)。對(duì)于每行文本,將單元格中換行文本的每行左右對(duì)齊 style.setAlignment(HorizontalAlignment.JUSTIFY); // 水平對(duì)齊在多個(gè)單元格中居中 style.setAlignment(HorizontalAlignment.CENTER_SELECTION); //平鋪。表示單元格中每行文本中的text均勻分布.跨越單元格的寬度,左右外邊距齊平。 style.setAlignment(HorizontalAlignment.DISTRIBUTED);
2.設(shè)置單元格垂直對(duì)齊,參考注解
//2.此枚舉值指示單元格的垂直對(duì)齊類(lèi)型,即: //垂直居中對(duì)齊 style.setVerticalAlignment(VerticalAlignment.CENTER); //頂部對(duì)齊 style.setVerticalAlignment(VerticalAlignment.TOP); //底部對(duì)齊 style.setVerticalAlignment(VerticalAlignment.BOTTOM); //對(duì)齊。 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類(lèi)中屬性對(duì)應(yīng)的具體顏色如下所示:
(1)枚舉值對(duì)應(yīng)的顏色
(2)色卡名稱(chēng)對(duì)應(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中對(duì)文字常用的操作行為
//4.設(shè)置字體樣式 Font titleFont = wb.createFont(); // 設(shè)置字體的名稱(chēng)(例如Arial) titleFont.setFontName("宋體"); // 以1/20點(diǎn)為單位設(shè)置字體高度。 titleFont.setFontHeight((short) 10); // 設(shè)置是否使用斜體 titleFont.setItalic(true); // 設(shè)置是否在文本中使用刪除線(xiàn)橫線(xiàn) titleFont.setStrikeout(true); //顏色設(shè)置 titleFont.setColor((short) 111); // 設(shè)置普通、上標(biāo)或下標(biāo)。 titleFont.setTypeOffset((short) 5); //下劃線(xiàn) 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ù)代表什么怎么用,簡(jiǎn)單解釋一下就是
X:起始行 Y:結(jié)束行 a:起始列 b:結(jié)束列
這樣就清晰的畫(huà)出了一個(gè)合并范圍。
// 6.合并單元格 SXSSFSheet sheet = wb.createSheet("測(cè)試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通過(guò)cellstyle屬性設(shè)置Excel單元格常用樣式的文章就介紹到這了,更多相關(guān)Java設(shè)置Excel單元格常用樣式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot~ObjectMapper~dto到entity的自動(dòng)賦值
這篇文章主要介紹了springboot~ObjectMapper~dto到entity的自動(dòng)賦值,本文分三種情況給大家介紹,需要的朋友可以參考下2018-08-08詳解Spring cloud使用Ribbon進(jìn)行Restful請(qǐng)求
這篇文章主要介紹了詳解Spring cloud使用Ribbon進(jìn)行Restful請(qǐng)求,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04利用Java實(shí)現(xiàn)輕松解析DNS報(bào)文
這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)輕松解析DNS報(bào)文,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下2023-11-11Spring Boot整合Spring Security的示例代碼
這篇文章主要介紹了Spring Boot整合Spring Security的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04springboot2?使用activiti6?idea插件的過(guò)程詳解
這篇文章主要介紹了springboot2?使用activiti6?idea插件,本文通過(guò)截圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解
Java8中的Stream流提供了collectingAndThen方法,用于對(duì)歸納結(jié)果進(jìn)行二次處理,文章通過(guò)User類(lèi)的數(shù)據(jù)填充,演示了如何使用該方法進(jìn)行集合去重、查找最高工資員工、計(jì)算平均工資等操作,感興趣的朋友跟隨小編一起看看吧2025-03-03