码迷,mamicode.com
首页 > 其他好文 > 详细

【POI xlsx】使用POI对xlsx的单元格样式进行设置

时间:2016-07-12 17:06:28      阅读:577      评论:0      收藏:0      [点我收藏+]

标签:

涉及到的样式都在代码中有说明:

技术分享
  1 package com.it.poiTest;
  2 
  3 import java.io.FileNotFoundException;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 
  7 import org.apache.poi.hssf.util.HSSFColor;
  8 import org.apache.poi.sl.usermodel.Sheet;
  9 import org.apache.poi.ss.usermodel.Cell;
 10 import org.apache.poi.ss.usermodel.Color;
 11 import org.apache.poi.ss.usermodel.IndexedColors;
 12 import org.apache.poi.ss.usermodel.Row;
 13 import org.apache.poi.ss.util.CellRangeAddress;
 14 import org.apache.poi.xssf.usermodel.XSSFCellStyle;
 15 import org.apache.poi.xssf.usermodel.XSSFColor;
 16 import org.apache.poi.xssf.usermodel.XSSFSheet;
 17 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 18 
 19 public class MoreStyleCell {
 20     public static void main(String[] args) {
 21         XSSFWorkbook workbook = new XSSFWorkbook();
 22         try {
 23             FileOutputStream out = new FileOutputStream("moreStyleWrokNook.xlsx");
 24             XSSFSheet sheet = workbook.createSheet("stylesheet");
 25             
 26             /**
 27              * 简单设置行高
 28              */
 29             //第一行
 30             Row row0 = sheet.createRow(0);
 31             row0.setHeight((short) (500));
 32             //第6列
 33             Cell cell = row0.createCell(5);
 34             cell.setCellValue("height=500");
 35             
 36             
 37             /**
 38              * 测试合并单元格之后的各个位置
 39              */
 40             //合并单元格                                参数1:第一行  /     参数2:最后一行 /   参数3:第一列 /  参数4:最后一列 [在此范围之内]
 41             sheet.addMergedRegion(new CellRangeAddress(1,3,1,4));
 42             Row  row1 = sheet.createRow(1);
 43             Cell cell1 = row1.createCell(0);
 44             cell1.setCellValue("第二行 第一列");
 45             Cell cell2 = row1.createCell(1);
 46             cell2.setCellValue("第二行,第二列。应该是合并单元格");
 47             //既然合并了单元格,查看一下1.2在什么位置  【证明并没有出现】
 48             Cell cell3 = row1.createCell(2);
 49             cell3.setCellValue("第二行,第三列");
 50             
 51             Cell cell4 = row1.createCell(5);
 52             cell4.setCellValue("第二行,第五列,也就是合并单元格之后的第三列");
 53             
 54             /**
 55              * 测试cellstyle的设置--单元格居中设置以及单元格内文字换行设置
 56              */
 57             row0 = sheet.createRow(4);
 58             row0.setHeight((short)1000);
 59             cell1 = row0.createCell(0);
 60             cell1.setCellValue("第五行 height=1000");
 61             //设置某一列的宽度
 62             sheet.setColumnWidth(0, 9000);
 63             XSSFCellStyle style1 = workbook.createCellStyle();
 64             //设置style---cell中水平的对齐方式
 65             style1.setAlignment(XSSFCellStyle.ALIGN_CENTER);
 66             //设置style---cell中垂直方向的对齐方式
 67             style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
 68             //给某个确定的cell设置样式
 69             cell1.setCellStyle(style1);
 70             //为cell单元格追加内容
 71             //获取到cell内的值【getRichStringCellValue获取富文本类型的值,除了小数类型的使用这个方法获取getNumericCellValue,其余类型均可以使用此方法获取toString之后就可以转化为其他的数据类型】
 72             String cell1Value = cell1.getRichStringCellValue().toString();
 73             //cell1.getNumericCellValue();
 74             //加上\n之后无法自动换行
 75             cell1.setCellValue(cell1Value+"\n"+"水平居中"+"\n"+"垂直居上");
 76             //设置style自动换行    这样就可以自动换行了
 77             style1.setWrapText(true);
 78             cell1.setCellValue(cell1Value+"\n"+"水平居中"+"\n"+"垂直居上"+"\n"+"自动换行");
 79             System.out.println(cell1Value);
 80             
 81             /**
 82              * style样式设置--设置border的边框样式以及颜色
 83              */
 84             row0 = sheet.createRow(5); 
 85             row0.setHeight((short)1000);
 86             cell1 = row0.createCell(5);
 87             cell1.setCellValue(6.6);
 88             XSSFCellStyle style2 = workbook.createCellStyle();
 89             style2.setBorderBottom(XSSFCellStyle.BORDER_THIN);
 90             style2.setBorderLeft(XSSFCellStyle.BORDER_HAIR);
 91             style2.setBorderRight(XSSFCellStyle.BORDER_DOTTED);
 92             style2.setBorderTop(XSSFCellStyle.BORDER_NONE);
 93             //颜色三种方式 给出   方式1:
 94             style2.setBottomBorderColor(IndexedColors.BLUE.getIndex());
 95             //方式2
 96             XSSFColor color = new XSSFColor();
 97             byte[] a = {127,0,13};
 98             //color.setRGB(a);
 99             color.setARGBHex("FF2906");
100             style2.setLeftBorderColor(color);
101             //方式3
102             style2.setRightBorderColor(HSSFColor.BLACK.index);
103             cell1.setCellStyle(style2);
104             
105             /**
106              * style设置---设置单元格的背景色与填充效果
107              */
108             row0 = sheet.createRow(6);
109             row0.setHeight((short) 1200);
110             cell1 = row0.createCell(6);
111             cell1.setCellValue(7.7);
112             XSSFCellStyle style3 = workbook.createCellStyle();
113             style3.setFillBackgroundColor(HSSFColor.RED.index);
114             //设置单元格的填充效果
115             style3.setFillPattern(XSSFCellStyle.LEAST_DOTS);
116             cell1.setCellStyle(style3);
117             
118             
119             /**
120              * style设置--设置单元格的前置填充颜色
121              */
122             row0 = sheet.createRow(7);
123             row0.setHeight((short) 1200);
124             cell1 = row0.createCell(7);
125             cell1.setCellValue(8.8);
126             XSSFCellStyle style4 = workbook.createCellStyle();
127             style4.setFillForegroundColor(IndexedColors.GREEN.index);
128             style4.setFillPattern(XSSFCellStyle.ALIGN_FILL);
129             cell1.setCellStyle(style4);
130             
131             
132             workbook.write(out);
133             
134         } catch (FileNotFoundException e) {
135             e.printStackTrace();
136         } catch (IOException e) {
137             e.printStackTrace();
138         }
139     }
140 }
View Code

 

样式最后的图例:

技术分享

 

【POI xlsx】使用POI对xlsx的单元格样式进行设置

标签:

原文地址:http://www.cnblogs.com/sxdcgaq8080/p/5664053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!