POI颜色索引
POI颜色大全
网络上面找到的资料都是 HSSFColor中颜色索引
现在大家基本都用XSSF了吧。即07之后的 xlsx 格式的excel
设置颜色的基本方法
thStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); //设置前景填充样式 thStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.getIndex());//设置颜色 |
POI 颜色 是一个short值。你可以直接设置数字,可是这样你或之后的人并不知道这个数字代表的颜色是什么。所以这里把常用的颜色放到IndexedColors中。
IndexColors提供了(64-8)56种颜色,真亏他起了56个名字。。。
这里用
for (IndexedColors c : IndexedColors.values())
即可遍历全部颜色
将颜色写入到excel。
第一个数值表示这个颜色的short值
第二个名字表示 颜色名 IndexedColors.颜色名.getIndex() ,可这样调用获取颜色代号
第三个颜色的颜色。
008 |
BLACK |
|
009 |
WHITE |
|
010 |
RED |
|
011 |
BRIGHT_GREEN |
|
012 |
BLUE |
|
013 |
YELLOW |
|
014 |
PINK |
|
015 |
TURQUOISE |
|
016 |
DARK_RED |
|
017 |
GREEN |
|
018 |
DARK_BLUE |
|
019 |
DARK_YELLOW |
|
020 |
VIOLET |
|
021 |
TEAL |
|
022 |
GREY_25_PERCENT |
|
023 |
GREY_50_PERCENT |
|
024 |
CORNFLOWER_BLUE |
|
025 |
MAROON |
|
026 |
LEMON_CHIFFON |
|
028 |
ORCHID |
|
029 |
CORAL |
|
030 |
ROYAL_BLUE |
|
031 |
LIGHT_CORNFLOWER_BLUE |
|
040 |
SKY_BLUE |
|
041 |
LIGHT_TURQUOISE |
|
042 |
LIGHT_GREEN |
|
043 |
LIGHT_YELLOW |
|
044 |
PALE_BLUE |
|
045 |
ROSE |
|
046 |
LAVENDER |
|
047 |
TAN |
|
048 |
LIGHT_BLUE |
|
049 |
AQUA |
|
050 |
LIME |
|
051 |
GOLD |
|
052 |
LIGHT_ORANGE |
|
053 |
ORANGE |
|
054 |
BLUE_GREY |
|
055 |
GREY_40_PERCENT |
|
056 |
DARK_TEAL |
|
057 |
SEA_GREEN |
|
058 |
DARK_GREEN |
|
059 |
OLIVE_GREEN |
|
060 |
BROWN |
|
061 |
PLUM |
|
062 |
INDIGO |
|
063 |
GREY_80_PERCENT |
|
064 |
AUTOMATIC |
|
附生成源代码
import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ColorTest { public static void main(String[] args) { short colorNum = 2;//每行显示的颜色的个数 short width1 = 2000;//颜色序號宽度 short width = 6000;//颜色名栏位的宽度 XSSFWorkbook workbook = new XSSFWorkbook(); CellStyle thStyle = workbook.createCellStyle(); XSSFSheet sheet = workbook.createSheet("IndexedColors遍历"); Row row =null; Cell cell; short i,j,index=0; String text=""; for(i=0;i<colorNum;i++){ sheet.setColumnWidth((short) i*3 , width1 ); sheet.setColumnWidth((short) i*3 + 1 , width ); } for (IndexedColors c : IndexedColors.values()){ i=(short) (index/colorNum); j=(short) (index%colorNum); thStyle = workbook.createCellStyle(); thStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); //设置前景填充样式 thStyle.setFillForegroundColor(c.getIndex()); row = j==0?sheet.createRow(i):row;//如果到了换行的时候row new一下 否则就当什么都没有发生 // text=""; // text += (index + 1000 + "").substring(1,4) +"||"; // text += (c.getIndex() + 1000 + "").substring(1,4) +"||"; // text += c; row.createCell(3*j).setCellValue(" "+(c.getIndex() + 1000 + "").substring(1,4)); row.createCell(3*j+1).setCellValue(c+""); row.createCell(3*j+2).setCellStyle(thStyle); index++;//计数 } sheet = workbook.createSheet("30X"+colorNum+"颜色遍历"); for( i=0;i<30;i++ ){ row = sheet.createRow(i); for(j=0;j<colorNum;j++){ thStyle = workbook.createCellStyle(); thStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); //设置前景填充样式 thStyle.setFillForegroundColor((short)(colorNum*i + j)); row.createCell(2*j).setCellValue((short)(colorNum*i + j)); row.createCell(2*j+1).setCellStyle(thStyle); } } FileOutputStream fileOut = null; try { fileOut = new FileOutputStream("POI颜色大全.xlsx"); workbook.write(fileOut); fileOut.close(); } catch (Exception e) { System.out.println("保存xlsx的时候发生的异常"); e.printStackTrace(); } } }