1.0 poi单元格合合并及写入
最近项目中用到poi生成Excel时,用到了单元格合并,于是参考了http://www.anyrt.com/blog/list/poiexcel.html写的文章,但是其中有些地方不是很清楚,于是自己琢磨了一下,实现了功能,并在此记录一下:
int index = 3 ; String lastCell = ""; String thisCell = ""; int lastRowIndex = 0; while(rs.next()){//每行 poiExcel.setCellIntValue(0, index, 0, (index-2)); for(int i = 0 ; i<array.length ;i++){//每列 colum = array[i]; if("F_SJDW".equals(colum) || "F_XMPC".equals(colum) || "F_DW".equals(colum)){//字符类型 poiExcel.setCellStringValue(0 , index , i+1 , "null".equals(""+rs.getString(colum))?" ":rs.getString(colum) ); }else if("F_YEAR".equals(colum)){//合并单元格 thisCell = "null".equals(""+rs.getString(colum))?" ":rs.getString(colum); // poiExcel.setCellStringValue(0 , index , i+1 , thisCell); }else{//数字类型 poiExcel.setCellDoubleValue(0 , index , i+1 , "null".equals(""+rs.getString(colum))? 0 :rs.getDouble(colum) ); } } if(!thisCell.equals(lastCell)){//上一次的值和当前的值不相等 if(index == 3){//设置初始值 lastCell = thisCell; lastRowIndex = index; }else{ poiExcel.getSheet(0).addMergedRegion(new CellRangeAddress(lastRowIndex,index-1,(short)2,(short)2)); poiExcel.setCellStringValue(0 , lastRowIndex , 2 , lastCell); lastCell = thisCell;//记录最后的值 lastRowIndex = index; } } index++; } if(index>3){ poiExcel.getSheet(0).addMergedRegion(new CellRangeAddress(lastRowIndex,index-1,(short)2,(short)2)); System.out.println(lastRowIndex); poiExcel.setCellStringValue(0 , lastRowIndex , 2 , lastCell); }
说明“:
合并单元格的关键性代码为:
poiExcel.getSheet(0).addMergedRegion(new CellRangeAddress(lastRowIndex,index-1,(short)2,(short)2)); 第一个参数lastRowIndex:起始行号,二个参数为终止行号,第三个参数为起始列,第四个参数为终止列,其中行的范围和列的范围皆为闭区间。 向合并单元格中写入值分为两种情况:(1)可以先每行都写入值,然后在进行合并单元格(2)先合并单元格,然后在合并后的第一个单元格中写入值,个人推荐使用第二种。
1.0 poi单元格合合并及写入的更多相关文章
- POI 单元格
OI 单元格合并中的CellRangeAddress 参数: CellRangeAddress(int, int, int, int) 参数:起始行号,终止行号, 起始列号,终止列号 sheet.ad ...
- 如何让elemengUI中的表格组件相同内容的单元格自动合并
1. 前言 这两天在工作中遇到这样一个需求:将某个Excel中的数据在页面上以表格形式展示出来,并且尽量保持数据层级与Excel中一致.在原始Excel文件中,对每一行相同的数据都进行了合并,使得数据 ...
- 使用js方法将table表格中指定列指定行中相同内容的单元格进行合并操作。
前言 使用js方法对html中的table表格进行单元格的行列合并操作. 网上执行此操作的实例方法有很多,但根据实际业务的区别,大多不适用. 所以在网上各位大神写的方法的基础上进行了部分修改以适合自己 ...
- POI单元格添加公式以及读取公式结果的值
POI提供了为单元格添加条件样式的方法,但是我并没有找到获取单元格改变后样式的方法,获取到样式依旧是没有改变之前的. 比如为单元格添加条件样式用于监听单元格值是否被修改,如果单元格值被修改那么字体颜色 ...
- 葡萄城报表 SP2 新特性(1)— 单元格智能合并
中国式复杂报表的布局,因为数据的动态性和结构性,导致其布局往往是无规律,且在设计时无法预测的,如单元格合并,通常不仅希望在每一列的数据展现中,能够根据需要自动将相同的单元格合并,且每个单元格之间该属性 ...
- jQuery实现HTML表格单元格的合并功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- freemarker实现单元格动态合并-行合并
项目需求:项目中有个需求,需要将一些数据库中的数据根据需求导出,生成一个word,研究了一些技术,其中包括POI.freemaker,对比了一下实现过程及技术难度没最终使用了freemaker; 原始 ...
- DW 做一个table表 对单元格进行合并
编辑前的代码 <body> <table width="500" border="0" bgcolor='#000000' backgroun ...
- Java POI单元格使用心得
1: /** * Created by liuguangxin on 2018/5/16. * <p> * MergeRegion:表示excel中cell的信息,startRow与end ...
随机推荐
- The Little Prince-11/30
The Little Prince-11/30 Today, I have a meeting in our department. I sincerely hope that all of my d ...
- Web开发相关笔记 #05# MySQL中文无法匹配
2018-06-02 在 Class.forName 的时候记得先尝试 import 一下. 2018-06-04 1.JDBC SELECT 查询,中文条件查不出东西,可能是字符编码问题: Stri ...
- scrapy selenium 登陆zhihu
# -*- coding: utf-8 -*- # 导入依赖包 import scrapy from selenium import webdriver import time import json ...
- linux装sqlite3
下载sqlite3源码包 tar xvfz sqlite-src-3.3.5 cd sqlite-3.3.5 ./configure –no-tcl make python继续一次. apt inst ...
- 创建docker镜像的私有仓库
CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 安装registry镜像 同时安装一个比较小的镜像alpine待会作测试用: # doc ...
- ACM札记
1. 逗号表达式 在“计蒜客“的ACM教程中,看到这样一段很好的代码: int n; while (scanf("%d", &n), n) { //do something ...
- c++中ifstream一次读取整个文件
转载:http://www.cnblogs.com/kex1n/p/4028428.html 第一种方法: 读取至std::string的情况: #include <string> #in ...
- 数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法 shift() 和其他位置增删 splice() 方法 join() 方法 reverse() 方法 sort() 方法
push用法 push 英 [pʊʃ] 美 [pʊʃ] vt. 推,推动; vt. 按; 推动,增加; 对…施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push( ...
- C# DateTime判断时间
两种情况: 1 DateTime? dtTemp = null; if(dtTime != null) { //wawawa } 刚刚学会的,可空值类型,可判断是否赋值 2 DateTime dtTe ...
- P4777 【模板】扩展中国剩余定理(EXCRT)
思路 中国剩余定理解决的是这样的问题 求x满足 \[ \begin{matrix}x \equiv a_1(mod\ m_1)\\x\equiv a_2(mod\ m_2)\\ \dots\\x\eq ...