POI的jar包版本3.14

3.17有很多就不一样了!!!!

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

 package com.it.poiTest;

 import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Color;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
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.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class MoreStyleCell {
public static void main(String[] args) {
XSSFWorkbook workbook = new XSSFWorkbook();
try {
FileOutputStream out = new FileOutputStream("moreStyleWrokNook.xlsx");
XSSFSheet sheet = workbook.createSheet("stylesheet"); /**
* 简单设置行高
*/
//第一行
Row row0 = sheet.createRow(0);
row0.setHeight((short) (500));
//第6列
Cell cell = row0.createCell(5);
cell.setCellValue("height=500"); /**
* 测试合并单元格之后的各个位置
*/
//合并单元格 参数1:第一行 / 参数2:最后一行 / 参数3:第一列 / 参数4:最后一列 [在此范围之内]
sheet.addMergedRegion(new CellRangeAddress(1,3,1,4));
Row row1 = sheet.createRow(1);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("第二行 第一列");
Cell cell2 = row1.createCell(1);
cell2.setCellValue("第二行,第二列。应该是合并单元格");
//既然合并了单元格,查看一下1.2在什么位置 【证明并没有出现】
Cell cell3 = row1.createCell(2);
cell3.setCellValue("第二行,第三列"); Cell cell4 = row1.createCell(5);
cell4.setCellValue("第二行,第五列,也就是合并单元格之后的第三列"); /**
* 测试cellstyle的设置--单元格居中设置以及单元格内文字换行设置
*/
row0 = sheet.createRow(4);
row0.setHeight((short)1000);
cell1 = row0.createCell(0);
cell1.setCellValue("第五行 height=1000");
//设置某一列的宽度
sheet.setColumnWidth(0, 9000);
XSSFCellStyle style1 = workbook.createCellStyle();
//设置style---cell中水平的对齐方式
style1.setAlignment(XSSFCellStyle.ALIGN_CENTER);
//设置style---cell中垂直方向的对齐方式
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
//给某个确定的cell设置样式
cell1.setCellStyle(style1);
//为cell单元格追加内容
//获取到cell内的值【getRichStringCellValue获取富文本类型的值,除了小数类型的使用这个方法获取getNumericCellValue,其余类型均可以使用此方法获取toString之后就可以转化为其他的数据类型】
String cell1Value = cell1.getRichStringCellValue().toString();
//cell1.getNumericCellValue();
//加上\n之后无法自动换行
cell1.setCellValue(cell1Value+"\n"+"水平居中"+"\n"+"垂直居上");
//设置style自动换行 这样就可以自动换行了
style1.setWrapText(true);
cell1.setCellValue(cell1Value+"\n"+"水平居中"+"\n"+"垂直居上"+"\n"+"自动换行");
System.out.println(cell1Value); /**
* style样式设置--设置border的边框样式以及颜色
*/
row0 = sheet.createRow(5);
row0.setHeight((short)1000);
cell1 = row0.createCell(5);
cell1.setCellValue(6.6);
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setBorderBottom(XSSFCellStyle.BORDER_THIN);
style2.setBorderLeft(XSSFCellStyle.BORDER_HAIR);
style2.setBorderRight(XSSFCellStyle.BORDER_DOTTED);
style2.setBorderTop(XSSFCellStyle.BORDER_NONE);
//颜色三种方式 给出 方式1:
style2.setBottomBorderColor(IndexedColors.BLUE.getIndex());
//方式2
XSSFColor color = new XSSFColor();
byte[] a = {127,0,13};
//color.setRGB(a);
color.setARGBHex("FF2906");
style2.setLeftBorderColor(color);
//方式3
style2.setRightBorderColor(HSSFColor.BLACK.index);
cell1.setCellStyle(style2); /**
* style设置---设置单元格的背景色与填充效果
*/
row0 = sheet.createRow(6);
row0.setHeight((short) 1200);
cell1 = row0.createCell(6);
cell1.setCellValue(7.7);
XSSFCellStyle style3 = workbook.createCellStyle();
style3.setFillBackgroundColor(HSSFColor.RED.index);
//设置单元格的填充效果
style3.setFillPattern(XSSFCellStyle.LEAST_DOTS);
cell1.setCellStyle(style3); /**
* style设置--设置单元格的前置填充颜色
*/
row0 = sheet.createRow(7);
row0.setHeight((short) 1200);
cell1 = row0.createCell(7);
cell1.setCellValue(8.8);
XSSFCellStyle style4 = workbook.createCellStyle();
style4.setFillForegroundColor(IndexedColors.GREEN.index);
style4.setFillPattern(XSSFCellStyle.ALIGN_FILL);
cell1.setCellStyle(style4); workbook.write(out); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

【着重说明一点】:

合并单元格的方法

hssfSheet.addMergedRegion(new CellRangeAddress(3,11,1,4))

参数1  从第4行开始

参数2  到第12行结束 包含第12行

参数3  从第2列开始

参数4  到第5列结束  包含第5列

如果【开始行和结束行在同一行】   或者   【开始列和结束列在同一列】

这两种情况允许同时出现一种或者都不出现。

如果【开始行和结束行在同一行】   和   【开始列和结束列在同一列】同时出现的话,那就没有合并单元格的意义了。同时就会报错:【错误行号和上面例子中行号并不匹配,不必在意】

java.lang.IllegalArgumentException: Merged region B4 must contain 2 or more cells

同样,如果控制不好,还会出现如下错误:

java.lang.IllegalStateException: Cannot add merged region B5:B6 to sheet because it overlaps with an existing merged region (B4:B5).

不能将合并的区域B5:B6添加到表格,因为它与现有的合并区域重叠(B4:B5)

就是你在下面合并的单元格 想要把上面已经合并的一部分单元格重叠了。

样式最后的图例:

其中,cell的边框类型分别如下:

边框范例图

对应的静态值

HSSFCellStyle. BORDER_DOTTED

HSSFCellStyle. BORDER_HAIR

HSSFCellStyle. BORDER_DASH_DOT_DOT

HSSFCellStyle. BORDER_DASH_DOT

HSSFCellStyle. BORDER_DASHED

HSSFCellStyle. BORDER_THIN

HSSFCellStyle. BORDER_MEDIUM_DASH_DOT_DOT

HSSFCellStyle. BORDER_SLANTED_DASH_DOT

HSSFCellStyle. BORDER_MEDIUM_DASH_DOT

HSSFCellStyle. BORDER_MEDIUM_DASHED

HSSFCellStyle. BORDER_MEDIUM

HSSFCellStyle. BORDER_THICK

HSSFCellStyle. BORDER_DOUBLE

其中,cell的背景纹理图片如下:

图案样式

常量

HSSFCellStyle. NO_FILL

HSSFCellStyle. ALT_BARS

HSSFCellStyle. FINE_DOTS

HSSFCellStyle. SPARSE_DOTS

HSSFCellStyle. LESS_DOTS

HSSFCellStyle. LEAST_DOTS

HSSFCellStyle. BRICKS

HSSFCellStyle. BIG_SPOTS

HSSFCellStyle. THICK_FORWARD_DIAG

HSSFCellStyle. THICK_BACKWARD_DIAG

HSSFCellStyle. THICK_VERT_BANDS

HSSFCellStyle. THICK_HORZ_BANDS

HSSFCellStyle. THIN_HORZ_BANDS

HSSFCellStyle. THIN_VERT_BANDS

HSSFCellStyle. THIN_BACKWARD_DIAG

HSSFCellStyle. THIN_FORWARD_DIAG

HSSFCellStyle. SQUARES

HSSFCellStyle. DIAMONDS

下面使用POI对字体进行设置:

 package com.it.poiTest;

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
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.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class FontTest { public static void main(String[] args) {
try {
XSSFWorkbook workbook = new XSSFWorkbook();
FileOutputStream out = new FileOutputStream("FontSet.xlsx");
XSSFSheet sheet = workbook.createSheet("font set");
sheet.setColumnWidth(1, 3000);
Row row = sheet.createRow(1);
row.setHeight((short) 900);
Cell cell = row.createCell(1);
cell.setCellValue("字体1"); /**
* font设置---设置字体样式
*/
XSSFFont font1 = workbook.createFont();
//设置行高使用HSSFRow对象的setHeight和setHeightInPoints方法,这两个方法的区别在于setHeightInPoints的单位是点,而setHeight的单位是1/20个点,所以setHeight的值永远是setHeightInPoints的20倍。
//设置字号大小
//font1.setFontHeight(20);
//设置字号大小
font1.setFontHeightInPoints((short) 20);
//设置字体
font1.setFontName("Pristina");
//设置加粗
font1.setBold(true);
//设置斜体
font1.setItalic(true);
//设置字体颜色
font1.setColor(IndexedColors.PINK.getIndex());
//或者
//font1.setColor(HSSFColor.YELLOW.index);
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font1);
cell.setCellStyle(style); /**
* 设置字体角度 顺时针旋转
*/
row = sheet.createRow(2);
row.setHeight((short) 900);
cell = row.createCell(2);
XSSFCellStyle style1 = workbook.createCellStyle();
style1.setRotation((short) 0);
cell.setCellValue("0 'C");
cell.setCellStyle(style1); row = sheet.createRow(3);
row.setHeight((short) 900);
cell = row.createCell(3);
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setRotation((short) 30);
cell.setCellValue("30 'C");
cell.setCellStyle(style2); row = sheet.createRow(4);
row.setHeight((short) 900);
cell = row.createCell(4);
XSSFCellStyle style3 = workbook.createCellStyle();
style3.setRotation((short) 180);
cell.setCellValue("180 'C");
cell.setCellStyle(style3); row = sheet.createRow(5);
row.setHeight((short) 900);
cell = row.createCell(5);
XSSFCellStyle style4 = workbook.createCellStyle();
style4.setRotation((short) 90);
cell.setCellValue("90 'C");
cell.setCellStyle(style4); workbook.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }

样式显示如下:

【POI xlsx】使用POI对xlsx的单元格样式进行设置 / 使用POI对xlsx的字体进行设置的更多相关文章

  1. POI解析Excel时,如何获取单元格样式以及单元格Style的一些操作

    最近,公司运营平台需要上传Excel文件并进行解析导入数据库,在开发完成后出现了一个始料不及的生产bug,下面是具体原因: 1.在用POI解析Excel时,默认如果Excel单元格中没有数据,且单元格 ...

  2. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

  3. poi的各种单元格样式以及一些常用的配置

    之前我做过一个poi到处excel数据的博客,但是,后面使用起来发现,导出的数据单元格样式都不对. 很多没有居中对齐,很多单元格的格式不对,还有就是单元格的大小不对,导致数据显示异常,虽然功能可以使用 ...

  4. java POI Excel 单元格样式

    正如Html需要CSS一样,我们的POI生成的Excel同样需要样式才能更完美的表现我们的数据.下面还是从简单的例子出发,学习和了解POI的样式设计. 一.我的位置. 1 package com.my ...

  5. 创建excel,合并单元格,设置单元格样式

    package com.huawei.excel; import java.io.File;import java.io.FileOutputStream;import java.util.Date; ...

  6. UITableViewCell 单元格样式

    UITableViewCell 单元格样式作用 typedef NS_ENUM(NSInteger, UITableViewCellStyle) { UITableViewCellStyleDefau ...

  7. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  8. 127使用 TableView 自带的单元格样式实现好友列表,另外在单元格中添加辅助按钮

    类似的做法如之前这篇随笔:114自定义UITableViewCell(扩展知识:为UITableViewCell添加动画效果) 相比之下:自定义 UITableViewCell 的内容灵活,可根据需求 ...

  9. NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

    NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...

随机推荐

  1. 构建seajs业务模块之grunt VS spm build

    在最开始,我并不知道grunt可以构建CMD模块.(以下spm指代spm build) 当时正困惑于如何用spm方便的构建业务模块,后来看到@twinstony (感谢@twinstony的分享)使用 ...

  2. Nginx 开启PATHINFO支持ThinkPHP框架实例

    ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可.在Apache下只需要开启mod_rew ...

  3. shell编程报错 [: missing `]'

    NGINX_RATES=50 NGINX_BURST=3000 NGINX_PATH=/opt/srv/nginx/conf/nginx.conf BEE_PATH=/opt/srv/nginx/co ...

  4. Public and Private Interfaces in ruby

    Your latest client is a bank, and they’ve tasked you with requiring customers to enter their passwor ...

  5. aspx注入靶机源码

    ASPX:   <%@ Page language="c#" validateRequest=false %> <!DOCTYPE HTML PUBLIC &qu ...

  6. C# params关键字

    params数组的要点 C#开发语言中 params 是关键字,可以指定在参数数目可变处采用参数的方法参数.在函数的参数数目可变而执行的代码差异很小的时候很有用! class Program { st ...

  7. 【Python】python list 迭代删除

    最好方式使用filter,代码示例: def _filter(self, item): ): return False return True #lambda e:e%!= data['items'] ...

  8. Eclipse常用快捷键与代码模板

    Eclipse常用快捷键汇总 Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键.1. [ALT+/]此快捷键为用户编 ...

  9. XP下使用IIS访问asp出现无权查看网页问题的解决办法

    这是用户权限问题,因为你用的磁盘是NTFS格式. 解决方法: 一.添加用户(“Everyone”或者“IUSR_你的机器名”,如IUSR_HONG,即“Internet 来宾用户”) 二.修改用户权限 ...

  10. HDU1286新朋友欧拉函数版

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...