POI实现EXCEL单元格合并及边框样式
POI实现EXCEL单元格合并及边框样式
下面例子为创建产生一个excel,合并单元格,然后为合并后的单元格添加边框
- package test;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import org.apache.poi.hssf.usermodel.HSSFCell;
- import org.apache.poi.hssf.usermodel.HSSFCellStyle;
- import org.apache.poi.hssf.usermodel.HSSFRow;
- import org.apache.poi.hssf.usermodel.HSSFSheet;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.BorderStyle;
- import org.apache.poi.ss.usermodel.Font;
- import org.apache.poi.ss.usermodel.HorizontalAlignment;
- import org.apache.poi.ss.util.CellRangeAddress;
- import org.apache.poi.ss.util.RegionUtil;
- public class ExcelPoiTest {
- public static void main(String[] args) {
- HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个excel
- // excel生成过程: excel-->sheet-->row-->cell
- HSSFSheet sheet = workbook.createSheet("test"); // 为excel创建一个名为test的sheet页
- HSSFRow row = sheet.createRow(1); // 创建一行,参数2表示第一行
- HSSFCell cellB2 = row.createCell(1); // 在B2位置创建一个单元格
- HSSFCell cellB3 = row.createCell(2); // 在B3位置创建一个单元格
- cellB2.setCellValue("单元格B2"); // B2单元格填充内容
- cellB3.setCellValue("单元格B3"); // B3单元格填充内容
- HSSFCellStyle cellStyle = workbook.createCellStyle(); // 单元格样式
- Font fontStyle = workbook.createFont(); // 字体样式
- fontStyle.setBold(true); // 加粗
- fontStyle.setFontName("黑体"); // 字体
- fontStyle.setFontHeightInPoints((short) 11); // 大小
- // 将字体样式添加到单元格样式中
- cellStyle.setFont(fontStyle);
- // 边框,居中
- cellStyle.setAlignment(HorizontalAlignment.CENTER);
- cellStyle.setBorderBottom(BorderStyle.THIN);
- cellStyle.setBorderLeft(BorderStyle.THIN);
- cellStyle.setBorderRight(BorderStyle.THIN);
- cellStyle.setBorderTop(BorderStyle.THIN);
- cellB2.setCellStyle(cellStyle); // 为B2单元格添加样式
- // 合并单元格
- CellRangeAddress cra =new CellRangeAddress(1, 3, 1, 3); // 起始行, 终止行, 起始列, 终止列
- sheet.addMergedRegion(cra);
- // 使用RegionUtil类为合并后的单元格添加边框
- RegionUtil.setBorderBottom(1, cra, sheet); // 下边框
- RegionUtil.setBorderLeft(1, cra, sheet); // 左边框
- RegionUtil.setBorderRight(1, cra, sheet); // 有边框
- RegionUtil.setBorderTop(1, cra, sheet); // 上边框
- // 输出到本地
- String excelName = "/myExcel.xls";
- FileOutputStream out = null;
- try {
- out = new FileOutputStream(excelName);
- workbook.write(out);
- out.flush();
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (out != null)
- try {
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- out = null;
- }
- }
- }
1.excel生成过程: excel-->sheet-->row-->cell
2.索引从0开始
3.合并单元格后保留最左上角的单元格(B3单元格被B2单元格覆盖)
4.合并后单元格边框通过RegionUtil设置,如果删除以下代码
- <span style="font-size:18px;"><strong> // 使用RegionUtil类为合并后的单元格添加边框
- RegionUtil.setBorderBottom(1, cra, sheet); // 下边框
- RegionUtil.setBorderLeft(1, cra, sheet); // 左边框
- RegionUtil.setBorderRight(1, cra, sheet); // 有边框
- RegionUtil.setBorderTop(1, cra, sheet); // 上边框</strong></span>
效果为:
可以看到只有B2单元格有边框。
java poi 合并单元格
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
- //这个就是合并单元格
- //参数说明:1:开始行 2:结束行 3:开始列 4:结束列
- //比如我要合并 第二行到第四行的 第六列到第八列 sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));
- sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
- XSSFRow row = sheet.createRow(number);
需要注意的地方(不对的地方请指教)
感觉唯一要注意的地方就是:需要先设置 合并单元格,然后再 生成 行。
比如我们要生成的单元格为:
| 1工作站 | 左位置 | 1序号 | 2000订单号 | 1成品号/型号 |
| 左位置 | 2序号 | |||
| 左位置 | 3序号 | |||
| 右位置 | 4序号 |
代码可以这样写:
- sheet.addMergedRegion(new CellRangeAddress(0,3,0,0));
- sheet.addMergedRegion(new CellRangeAddress(0,3,3,3));
- sheet.addMergedRegion(new CellRangeAddress(0,3,4,4));
- //第一行数据
- XSSFRow row = sheet.createRow(0);
- row.createCell(0).setCellValue("工作站");
- row.createCell(1).setCellValue("位置");
- row.createCell(2).setCellValue("序号");
- row.createCell(3).setCellValue("订单号");
- row.createCell(4).setCellValue("成品号/型号");
- //第二行数据
- XSSFRow row = sheet.createRow(number);
- //row.createCell(0).setCellValue("工作站");//因为和上面的行合并了,所以不用再次 赋值了
- row.createCell(1).setCellValue("位置");
- row.createCell(2).setCellValue("序号");
- //row.createCell(3).setCellValue("订单号");//因为和上面的行合并了,所以不用再次 赋值了
- //row.createCell(4).setCellValue("成品号/型号");//因为和上面的行合并了,所以不用再次 赋值了
第三行数据和 第二行是一样的
POI实现EXCEL单元格合并及边框样式的更多相关文章
- POI对Excel单元格进行颜色设置
POI对Excel单元格进行颜色设置 学习了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workbook = new HS ...
- 修复Java使用POI合并Excel单元格后,边框不显示的问题
使用Apache POI生成Excel文档时,当进行单元格合并操作后,被合并的单元格边框会消失,使用如下方式可以解决. 创建方法: public void setBorderStyle(int bor ...
- POI获取excel单元格红色字体,淡蓝色前景色的内容
如果是Microsoft Excel 97-2003 工作表 (.xls) if(31 == cell.getCellStyle().getFillForegroundColor()) //判断单元格 ...
- php实现excel单元格合并,字体加粗居中等操作
使用的是phpexcel,基本用的原生语法,所见即所得,直接复制下面代码,即可: // 引用phpexcel类 $this->load->library('PHPExcel'); // 创 ...
- java POI实现Excel单元格数据换行
当我们通过POI设置了表格的列宽的时候,如果文字过长,希望文字能够自己折行显示. 截取代码如下: Workbook wb = new XSSFWorkbook(); //or new HSSFWork ...
- C# 解决EXCEL单元格合并,行高无法自适应问题
解决方法:根据单元格内容长度,设置单元格所在行的行高 public static float getExcelCellAutoHeight(string strtest, float fontCoun ...
- POI 设置Excel单元格背景色(setFillForegroundColor)
背景介绍:使用Java开发信息系统项目,项目中往往会涉及到报表管理部分,而Excel表格首当其冲称为最合适的选择,但是对单元格操作时对于设置单元格的背景颜色却很少提及,本文旨在方便单元格背景颜色设计. ...
- NPOI设置Excel单元格字体、边框、对齐、背景色
代码: ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.BorderBottom = BorderStyle.Thin; ce ...
- poi 取excel单元格内容时,需要判断单元格的类型,才能正确取出
以下内容非原创,原文链接http://blog.sina.com.cn/s/blog_4b5bc01101015iuq.html ate String getCellValue(HSSFCell ce ...
随机推荐
- 最小二乘法 及 梯度下降法 分别对存在多重共线性数据集 进行线性回归 (Python版)
网上对于线性回归的讲解已经很多,这里不再对此概念进行重复,本博客是作者在听吴恩达ML课程时候偶然突发想法,做了两个小实验,第一个实验是采用最小二乘法对数据进行拟合, 第二个实验是采用梯度下降方法对数据 ...
- Maven3的环境配置
1 需要准备一个Maven的包,名字叫:apache_maven_3.3.9(在百度中搜索自行下载) 2 在eclipse中点击window→preferences→maven→Installatio ...
- Python需要知道的知识点
1.所有数据类型都自带布尔值,布尔值为假的数据类型 包括( 空字符串,空列表,空字典,空集合).数字(0).None类型 2.Python实现int的时候有个小整数池.为了避免因创建相同的值而重复申请 ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(十)-- 发布(Windows)
本篇将在这个系列演示的例子上继续记录Asp.Net Core在Windows上发布的过程. Asp.Net Core在Windows上可以采用两种运行方式.一种是自托管运行,另一种是发布到IIS托管运 ...
- vault 集群搭建(active standby 模式)
参考架构图: consul server cluster 搭建 consul 基本配置格式 { "server": true, "node_name": ...
- 使用VBS发邮件
NameSpace = "http://schemas.microsoft.com/cdo/configuration/"set Email = CreateObject(&quo ...
- Jsp Cookie
cookie它是用户访问Web服务器时,服务器在用户硬盘上存放的信息. 1.使用Servlet实现cookie @WebServlet("/CookieServlet") publ ...
- Maven 生成项目站点
Maven 不仅仅时一个自动化构建工具和一个依赖管理工具,他还能够帮助聚合项目信息,促进团队间的交流,POM 可以包含各种项目信息,如项目描述.版本控制系统地址.缺陷跟踪系统地址.许可证信息.开发者信 ...
- C#代码规范和质量检查工具
代码风格检查:StyleCop The StyleCop tool provides warnings that indicate style and consistency rule violati ...
- dede模块管理一片空白或没有列表内容的解决办法
为什么dede后台模块管理,打开之后一片空白,又或者没有列表,插件与其他模块的使用也是正常的. 这主要是因为我们在安装模块,然后又卸载模块,卸载的时候选择了删除安装文件,就会出这个问题. 这里面分为两 ...