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. MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

    MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321( ...

  2. 关于31天App教程示例中一些因SDK版本而出现的问题(转)

    由于国外那个知名的31天案例教程比较老,所用官方API是2008年时的2.X,所以在现在的Xcode3-4之后或多或少都有编译警告和错误信息.必须做些适应iOS版本的代码更改才能顺利编译通过. Day ...

  3. C#原始类型扩展方法—this参数修饰符

    扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual ...

  4. datetime中strftime和strptime用法

    from datetime import * format = "%Y-%m-%d %H:%M:%S" a=datetime.now() day=a.day b=a.replace ...

  5. django template中load的作用

    某些应用提供自定义标签和过滤器库. 要在一个模板中访问它们, 使用 {% load %} 标签: {% load comments %} {% comment_form for blogs.entri ...

  6. jdk新特性

    自动拆装箱子: import org.junit.Test; public class Demo { /* * 自动拆装箱 * */ @Test public void ZhuangXiang() { ...

  7. 排序稳定性stable

    stable排序 O(n^2): InsertionSort,BubbleSort O(nlgn): MergeSort O(n+k): CountSort, RadixSort,BucketSort ...

  8. (转)SQL Server 的事务和锁(一)

    SQL Server 的事务和锁(一)   最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁: 1 2 3 4 5 6 7 8 9 1 ...

  9. mysql cluster 运行的必备条件

    1.由于同步复制一共需要4次消息传递,故mysql  cluster的数据更新速度比单机mysql要慢.所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直 ...

  10. 在SQLServer处理中的一些问题及解决方法 NEWSEQUENTIALID()

    一.DBLINK性能问题select * from dbsource.dbname.dbo.table where guid in (select guid from tablechangelog w ...