设置单元格样式

HSSFCellStyle类代表一种单元格样式。可以通过这个类来设置单元格的边框样式、背景颜色、字体、水平和垂直对齐方式等等。

HSSFCellStyle titleStyle = workbook.createCellStyle();

titleStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);

titleStyle.setBorderLeft((short)1);

titleStyle.setBorderRight((short)1);

titleStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);

titleStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);

titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

注意:如果我们定义了一种样式,把它赋给一些单元格。然后基于新的需要,更改该样式中的某个属性,再赋给另一些单元格。那么之前单元格样式的该属性也会被同时更改。

比如我们定义了样式,设置单元格背景色为红色:

HSSFCellStyle cellStyle = workbook.createCellStyle();

cellStyle.setFillForegroundColor(HSSFColor.RED.index);

cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

然后把它赋给一个单元格:

HSSFCell cell1 = row.createCell((short)1);

cell1.setCellStyle(cellStyle);

然后更改样式中的背景色属性为蓝色:

cellStyle.setFillForegroundColor(HSSFColor.BLUE.index);

然后赋给另一个单元格:

HSSFCell cell2 = row.createCell((short)2);

cell2.setCellStyle(cellStyle);

想当然,我们预计在最终结果中cell1的背景色为红色,cell2的背景色为蓝色。但是结果是:两个单元格的背景色都变成了蓝色。

遇到这种情况,要预先定义两种不同的单元格样式。

当一个EXCEL文件同时需要很多大同小异的单元格样式时,这样一一定义很麻烦。POI HSSF提供了一个HSSFCellUtil类(在org.apache.poi.hssf.usermodel.contrib包),里面有几个方法可以绕过HSSFCellStyle直接设定单元格的样式,但这几个方法会抛出NestableException异常,要处理这个异常,需要引用Apache的几个Common包:

commons-beanutils.jar

commons-beanutils-bean-collections.jar

commons-beanutils-core.jar

commons-lang.jar

commons-logging-api.jar

合并单元格

HSSFSheet.addMergedRegion(new Region())方法可以合并单元格,Region()中的一个构造函数含有四个参数,分别代表起始行、起始列、结束行、结束列:

sheet.addMergedRegion(new Region(startRow,startCell,endRow,endCell)));

处理公式

HSSFCell.setCellFormula()方法用来在EXCEL单元格中写入公式。

cell = row.createCell((short)(dataFlag));

cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);

cell.setCellFormula("SUM("A1:D1")");

cell.setCellStyle(nameStyle);

处理链接

在POI中往单元格中写链接,是用HYPERLINK函数搞定的。

HYPERLINK函数包含两个参数,第一个参数是指向的URL地址,第二个参数是显示字串。

cell = row.createCell((short)(dataFlag));

cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);

cell.setCellFormula("HYPERLINK('链接地址http...')");   cell.setCellStyle(linkStyle);

为了使链接效果更好,我们可以给链接所在单元格定义一种样式,使链接显示为有下划线的蓝色字串:

HSSFCellStyle linkStyle = workbook.createCellStyle();

linkStyle.setBorderBottom((short)1);

linkStyle.setBorderLeft((short)1);

linkStyle.setBorderRight((short)1);

linkStyle.setBorderTop((short)1);

linkStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

linkStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

HSSFFont font = workbook.createFont();

font.setFontName(HSSFFont.FONT_ARIAL);

font.setUnderline((byte)1);  font.setColor(HSSFColor.BLUE.index);

linkStyle.setFont(font);

中文处理:

要在通过POI生成的EXCEL中正常显示中文,需要为单元格设置编码:

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue("部门");

java poi 设置公式_poi公式处理相关推荐

  1. java poi 设置标题_poi生成Word时指定文本样式,如“正文”,“标题1”,“标题2”等...

    POI生成Word时,设置段落的样式 String style = "2"; //标题2的样式 XWPFParagraph xwpfParagraph = doc.insertNe ...

  2. 如何使用Apache POI设置Excel的公式字段

    如何使用Apache POI设置Excel的公式字段 1. 概述 在本文中,我们将通过一个简单的示例来演示如何使用Apache POI在Microsoft Excel电子表格中设置公式字段 2. Ap ...

  3. Java poi设置打开模式_java操作Excel的poi 格式设置

    格式设置 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi. ...

  4. java poi 设置时间空间_java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式?...

    java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式? 我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件. 现在我有了一个新的要求,即 ...

  5. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎么设置_Java代码实现设置单元格格式...

    java中导出excel设置单元格的样式为数字格式怎么设置 如果是使用poi,它会自动根据参数值设置单元格为恰当格式,只需传入数字类型参数值即可,比如 double value=....; cell. ...

  6. java poi 加粗_poi生成excel整理(设置边框/字体/颜色/加粗/居中/)

    HSSFWorkbook wb = new HSSFWorkbook();html HSSFSheet sheet = wb.createSheet();字体 HSSFCellStyle setBor ...

  7. java POI 求和函数_POI导出excel执行自动求和

    1.核心代码 /*设置单元格样式*/ XSSFCellStyle cellStyle = workbook.createCellStyle();// 单元格样式 cellStyle.setWrapTe ...

  8. java poi设置单元格格式为数值,Apache POI 如何读取Excel中数值类型单元格所规定的保留小数位?...

    问题描述 java apache poi 包内是否有方法可以获取Excel数值类型单元格中保留的位数? 问题出现的环境背景及自己尝试过哪些方法 有这么一个场景: 需求:从Excel文件中读取数据,原样 ...

  9. java poi设置单元格格式为数值_Excel 文本转数值的方法——我找的好苦啊

    不明绝厉 在Excel中的单元格中输入数字时,如果在数字前加上一个半角单引号(')则该数字在单元格中的存储格式会自己转为"文本格式". 如果有一列(或一行)数字都是用这种方法输入的 ...

最新文章

  1. sqlserver 创建对某个存储过程执行情况的跟踪
  2. C++一天一个程序(一)
  3. python中locked_Python锁类| 带示例的locked()方法
  4. python图像标记工具怎么用_一眼看穿的最佳图像标记工具!
  5. 理清逻辑,确保云原生时代应用开发的全生命周期安全
  6. (105)FPGA面试题-查找程序中的代码错误
  7. OpenShift 之 Quarkus(3)用独立的Prometheus监控Quarkus应用
  8. python文字转图片_python-将文本文件转换为图形
  9. [转] js前端解决跨域问题的8种方案(最新最全)
  10. 生成全1矩阵_2020美赛A题(1)-图像处理
  11. python入门先学什么-学习python需要什么基础
  12. Kafka常见面试问题
  13. 关于element el-button使用$attrs的一个注意要点
  14. RFID课程设计之图书管理系统
  15. 如何获取ppt内的视频文件
  16. lof基金溢价率php源码,一文读懂LOF基金套利策略 LOF是球友们很喜欢的一类基金,这类基金不仅可以在场内进行高效买卖,而且还可以进行折溢价套利。不过这里面牵扯到很多细节,... - 雪球...
  17. Python: 使用sphinx生成python项目文档
  18. 小米电视怎么看CCTV?安装超好用的HDP直播来帮助你
  19. 百度地图API 解析经纬度
  20. Kali Linux中安装IDLE的方法

热门文章

  1. 一步搞定模型训练和商品召回:京东全新索引联合训练召回模型
  2. 人脸静默活体检测最新综述
  3. 基于深度学习的多目标跟踪算法(上):端到端的数据关联
  4. NeurIPS 2019 | 用于弱监督图像语义分割的新型损失函数
  5. HDU1426 Sudoku Killer DFS
  6. 算法竞赛入门与进阶 (四)二分
  7. 【虚拟化】Dockerfile构建JDK镜像
  8. Spring-Bean依赖注入(引用数据类型和集合数据类型)
  9. java 实现获取支付宝授权获取会员信息
  10. spring boot中使用@Async失效