- 浏览: 1468148 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (460)
- java (148)
- javascript (34)
- Flex文章 (4)
- css+div (2)
- ajax (6)
- extjs (11)
- 人生感悟 (9)
- struts2.0 (6)
- IT之路,生活 (15)
- hibernate (6)
- struts1 (1)
- spring (5)
- j2ee错误 (3)
- Dwr (5)
- Linux (33)
- C++ (3)
- SWT Win32 (2)
- EJB (1)
- JPA (4)
- C语言和LinuxC (7)
- SQL (13)
- 项目经理 (6)
- db2 (2)
- java数据结构 (2)
- 网页播放器flv (1)
- 数据库 (24)
- 用户体验设计学习 (2)
- 网络电话 (5)
- 军事理论 (4)
- android (3)
- oracle (18)
- oracle ebs form (11)
- oracle ebs oaf (4)
- erp (20)
- DBA (9)
- java中URL 的编码和解码函数 (1)
- 铁血丹心 (1)
- excel 单元格格式不能立即生效 (1)
- Java调用bat文件 (1)
- 如何把本地outlook中的邮件上传到网络邮箱中 (1)
- java 报表 打印 (1)
- 创建dblink (1)
- 图标前台框架 (1)
- vnc (1)
- FORM (1)
- MYSQL (1)
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
web打印不显示页眉页脚 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
Javascript网页打印大全 -
hardyer:
大哥写的很实在,受教了,提前祝你元旦快乐!
黎活明给程序员的忠告 -
cxysilahi:
请问WIN7 64位,调用报错Exception in thr ...
JNative的初步使用 -
action1949:
好东西,解决问题
JFreeChart乱码解决方法
POI进行跨行需要用到对象HSSFSheet对象,现在就当我们程序已经定义了一个HSSFSheet对象sheet。
跨第1行第1个到第2个单元格的操作为
sheet.addMergedRegion(new Region(0,(short)0,0,(short)1));
跨第1行第1个到第2行第1个单元格的操作为
sheet.addMergedRegion(new Region(0,(short)0,1,(short)0));
重点注意事项:
1.单元格CELL和ROW对象下标都是从0开始的。
2.单元格合并时Region(1,2,3,4)第1个值的行号必须要比3位置的行号小,如果大于3就不能正常合并单元格
3.合并单元格的时候要合并的单单元格必须先创建,这样方便后面再次获取这个单元格来填充数据,主要就是因为合并时不能由后向前进行合并引起的。
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.hssf.util.Region; public class ExcelTest { /** * @param args */ public static void main(String[] args) throws IOException { try { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFCellStyle style = wb.createCellStyle(); // 样式对象 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平 HSSFRow row = sheet.createRow((short) 0); HSSFRow row2 = sheet.createRow((short) 1); sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0)); HSSFCell ce = row.createCell((short) 0); ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理 ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据 ce.setCellStyle(style); // 样式,居中 int num = 0; for (int i = 0; i < 9; i++) { // 循环9次,每一次都要跨单元格显示 // 计算从那个单元格跨到那一格 int celln = 0; int celle = 0; if (i == 0) { celln = 0; celle = 1; } else { celln = (i * 2); celle = (i * 2 + 1); } // 单元格合并 // 四个参数分别是:起始行,起始列,结束行,结束列 sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0, (short) (celle + 1))); HSSFCell cell = row.createCell((short) (celln + 1)); cell.setCellValue("merging" + i); // 跨单元格显示的数据 cell.setCellStyle(style); // 样式 // 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额” HSSFCell cell1 = row2.createCell((short) celle); HSSFCell cell2 = row2.createCell((short) (celle + 1)); cell1.setEncoding(HSSFCell.ENCODING_UTF_16); cell1.setCellValue("数量"); cell1.setCellStyle(style); cell2.setEncoding(HSSFCell.ENCODING_UTF_16); cell2.setCellValue("金额"); cell2.setCellStyle(style); num++; } // 在后面加上合计百分比 // 合计 在最后加上,还要跨一个单元格 sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0, (short) (2 * num + 2))); HSSFCell cell = row.createCell((short) (2 * num + 1)); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("合计"); cell.setCellStyle(style); HSSFCell cell1 = row2.createCell((short) (2 * num + 1)); HSSFCell cell2 = row2.createCell((short) (2 * num + 2)); cell1.setEncoding(HSSFCell.ENCODING_UTF_16); cell1.setCellValue("数量"); cell1.setCellStyle(style); cell2.setEncoding(HSSFCell.ENCODING_UTF_16); cell2.setCellValue("金额"); cell2.setCellStyle(style); // 百分比 同上 sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0, (short) (2 * num + 4))); HSSFCell cellb = row.createCell((short) (2 * num + 3)); cellb.setEncoding(HSSFCell.ENCODING_UTF_16); cellb.setCellValue("百分比"); cellb.setCellStyle(style); HSSFCell cellb1 = row2.createCell((short) (2 * num + 3)); HSSFCell cellb2 = row2.createCell((short) (2 * num + 4)); cellb1.setEncoding(HSSFCell.ENCODING_UTF_16); cellb1.setCellValue("数量"); cellb1.setCellStyle(style); cellb2.setEncoding(HSSFCell.ENCODING_UTF_16); cellb2.setCellValue("金额"); cellb2.setCellStyle(style); /***这里是问题的关键,将这个工作簿写入到一个流中就可以输出相应的名字,这里需要写路径就ok了。 FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); **/ /**第二种是输出到也面中的excel名称 * pName="栏目统计表"; response.reset(); response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition","attachment; filename="+new String(pName.getBytes("gb2312"),"ISO-8859-1")+".xls"); ServletOutputStream outStream=null; try{ outStream = response.getOutputStream(); wb.write(outStream); }catch(Exception e) { e.printStackTrace(); }finally{ outStream.close(); } * */ System.out.print("OK"); } catch (Exception ex) { ex.printStackTrace(); } } }
发表评论
-
Oracle Developer10G 安装
2020-09-09 18:03 331oracle 客户端也要删除,以前的oracle产品 ... -
打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion
2018-06-05 15:06 9602打开Eclipse时出现"The Eclipse ... -
J2EE通过tomcat部署的两种方式
2017-09-12 09:01 657转载:http://blog.csdn.net/psp000 ... -
Linux安装Tomcat7
2016-03-30 15:01 868http://blog.sina.com.cn/s/blog ... -
java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)
2015-11-17 22:10 1539http://blog.csdn.net/flyingclo ... -
栋哥涕啐茆
2015-10-27 10:49 753栋哥涕啐茆 -
Eclipse快捷键 10个最有用的快捷键
2015-10-27 10:18 786Eclipse中10个最有用的快捷键组合 一个Eclip ... -
java上传头像图像剪切
2015-04-02 20:19 1160java上传头像图像剪切 JQUERY 图片上传裁切 -
创建dblink
2014-12-11 20:01 670CREATE public database link ... -
Bitnami Redmine 安装笔记
2014-12-10 11:28 1590http://atian25.iteye.com/blog/ ... -
利用workflow发送类似数据报表内容的通知页面
2014-11-21 15:03 811利用workflow发送类似数据报表内容的通知页面 ... -
excel科学技术法问题
2014-11-12 13:50 7841.使用导入外部数据的方法2.并且在第三步的时候选择文本,需要 ... -
java.lang.IllegalAccessError
2014-09-29 11:05 1132java.lang.IllegalAccessError: ... -
java如何获取文件编码格式
2014-04-11 11:28 102171:简单判断是UTF-8或不是UTF-8,因为一般除了UTF ... -
JAVA中使用FTPClient上传下载
2013-12-08 13:35 1911方法一:这种方法网上有许多 可以用下面的方式,但是支持批量 ... -
在Java中获取环境变量
2013-11-11 11:18 1418package cy.cn.test; import ... -
ORACLE性能调整笔记
2013-11-05 18:39 0一 关于statspack中等待事件的一些解释 ... -
EBS DBA指南笔记1
2013-11-05 18:35 1895时光飞逝,不从事EBS DBA转眼已有两年多。很还念那段学习 ... -
用html代码在word中插入分页符和页面设置
2013-11-05 17:11 5277<span lang=EN-US style=&quo ... -
OpenJWeb新增二维码图片生成功能
2013-11-05 09:02 1269在开发进销存软件的时 ...
相关推荐
java POI导出Excel文件多表头文件
POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
easyuiPoi 通过模板导出Excel、支持纵向合并单元格(合并重复内容)。压缩包包含公共工具类、示例模板、调用截图。
POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格
poi导入/导出Excel表格,合并单元格的读取和设置
关于java EXCEL poi 合并后无法显示或无法设置边框问题 【本人亲测】 excel poi 新手! 坑了1.5天!
利用poi进行excel相同内容合并单元格,只摘要了传入部分功能,请关注addMergedRegion方法
【JAVA】easypoi根据Excel模板导出 循环遍历合并单元格处理
excel poi工具类 导入 导出 合并单元格 计算公式
10、添加区域,合并单元格 11、保存Excel文件 12、根据单元格不同属性返回字符串数值 13、常用单元格边框格式 14、设置字体和内容位置 15、插入图片 16、调整工作表位置 17、设置打印区域 18、标注脚注 19...
java代码,实现从数据库中查询出数据,然后通过poi实现合并单元格生成excel
1. 第一部门:详细介绍POI使用以及完成各种复杂的Excel的导出(动态筛选、多对象数据导出到同一sheet内、动态横向合并单元格以及动态纵向合并单元格等) 2.第二部分:使用EasyExcel导出excel的多种情况的例子介绍...
ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容
一般在导出Excel中,在创建工作表sheet后,初始化的sheet中row都是一行一行的,每个单元格都是最小单位,所以问题1什么时候将单元格合并? 方案:先将数据组装成json格式方便插入Excel时进行遍历,接着以巡检项为每...
POI报表导出excel文件,POI包为3.6版本。里面导出的方法及设置样、合并单元格,合并多表头均有比较清晰的注释。希望对大家有用。
支持大数据量导出excel。自动合并相同数据单元格,可根据id自动识别是否合并,支持自定义类型数据转换,根据实体类自动识别。
java 导出,导入excel。用户自定义导出模板。模板显示内容用el表达式即可。用户可以定义每一个单元格的显示内容。可以自定义List数据的展示。一个excel的sheet内,可以有多个list的数据循环
对excel表格中合并后的单元格进行拆分,利于数据的排序及其他操作。把代码粘贴到宏代码里即可。
注意common-poi使用的SXSSFWorkbook(这个只支持xlsx)支持缓存导出,但是这个只支持简单的for循环导出,模板中的合并单元格那些都未做处理,可能以后会完善。common-poi-no-cache这个支持合并单元格及xls导出。但是...