- 浏览: 63187 次
- 性别:
最新评论
-
hanfeng870223:
...
验证码机制实现 -
dovecat:
在workbook中可以设置样式的模板.比用代码设置要方便多了 ...
[讨论]poi jxl 操作excel出报表 -
jwen:
大家有检验的介绍下.
[讨论]poi jxl 操作excel出报表 -
jwen:
呵呵 谢谢大家的意见,只选一个的情况是可以的,
但全部不选的情 ...
获得一组checkbox的值 -
抛出异常的爱:
如果只有一个被选中。。。。。。你试过没有?
获得一组checkbox的值
最近学习java 通过poi jxl 等API 来操作Excel 出报表
有几点感想,在基本的功能方面(数据填充,基本格式绘制)感觉很简单
一下是一个绘制简单报表的方法:
但要绘制下面的模板感觉却很难:
要求: 整个版面事固定的,要求需设置边框样式,内部线格式,
要求设置页边距,整个列表的长宽.
要求数据内容的填充自动适应单元格大小,尽量排版美观(单元格固定大小)
有几点感想,在基本的功能方面(数据填充,基本格式绘制)感觉很简单
一下是一个绘制简单报表的方法:
public static void toExcel(EpmEqRmaBO bo,File fileAddress) { String temp=""; DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); I18NInfoService i18NInfoService = new I18NInfoService(); try { //构建Workbook对象, 只读Workbook对象 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(fileAddress); jxl.write.WritableSheet ws = wwb.createSheet("Sheet 1", 0); //设置列宽 ws.setColumnView(0,6); ws.setColumnView(1,12); ws.setColumnView(2,12); ws.setColumnView(3,12); ws.setColumnView(4,12); ws.setColumnView(5,20); ws.setColumnView(6,12); ws.setColumnView(7,12); ws.setColumnView(8,16); ws.setColumnView(9,12); //设置行高 ws.setRowView(0,600); ws.setRowView(1,400); ws.setRowView(2,300); ws.setRowView(4,300); ws.setRowView(5,300); ws.setRowView(6,300); //大标题的格式 WritableFont font1 = new WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); WritableCellFormat title1 = new WritableCellFormat(font1); title1.setAlignment(jxl.format.Alignment.CENTRE); //水平对齐 //小标题的格式 WritableFont font2 = new WritableFont(WritableFont.TIMES, 14 ,WritableFont.BOLD); WritableCellFormat title2 = new WritableCellFormat(font2); title2.setAlignment(jxl.format.Alignment.CENTRE); //水平对齐 //次标题的格式 WritableFont font3 = new WritableFont(WritableFont.TIMES, 10 ,WritableFont.NO_BOLD); WritableCellFormat title3 = new WritableCellFormat(font3); title3.setAlignment(jxl.format.Alignment.LEFT); //水平对齐 //表格栏目的格式 WritableFont font4 = new WritableFont(WritableFont.TIMES, 10 ,WritableFont.NO_BOLD); WritableCellFormat title4 = new WritableCellFormat(font4); title4.setAlignment(jxl.format.Alignment.CENTRE); //水平对齐 title4.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直对齐 title4.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置边框 //设置数据类的格式 WritableFont font5= new WritableFont(WritableFont.TIMES, 12 ,WritableFont.NO_BOLD); WritableCellFormat cell = new WritableCellFormat(font5); cell.setAlignment(jxl.format.Alignment.CENTRE); //水平对齐 cell.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直对齐 cell.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置边框 jxl.write.Label labelC = new jxl.write.Label(0, 0, "故障设备送修单",title1); ws.addCell(labelC); ws.mergeCells(0,0,9,0); labelC =new jxl.write.Label(0,1 , "Return Material Authorization Request (RMA)",title2); ws.addCell(labelC); ws.mergeCells(0,1,9,1); if(bo.getEpmEqRmaVO().getCreatedTime()!=null && !"".equals(bo.getEpmEqRmaVO().getCreatedTime()) && bo.getEpmEqRmaVO().getCreatedTime().length()>10) { labelC = new jxl.write.Label(0,2 , "联系人:"+bo.getCustPersonName()+" 填单日期:"+bo.getEpmEqRmaVO().getCreatedTime().substring(0,10),title3); } else { labelC = new jxl.write.Label(0,2 , "联系人:"+bo.getCustPersonName()+" 填单日期:"+bo.getEpmEqRmaVO().getCreatedTime(),title3); } ws.addCell(labelC); ws.mergeCells(0,2,9,2); //电话: 传真: EMAIL: 此栏由xx填写: labelC = new jxl.write.Label(0,3 , "电话:" + bo.getOfficePhone()+" 传真:" + bo.getFax()+" EMAIL:" + bo.getEmail(),title3); ws.addCell(labelC); ws.mergeCells(0,3,9,3); //用户单位: 邮编: RMA确认号: labelC = new jxl.write.Label(0,4 , "用户单位:" + bo.getCustName()+" 邮编:" + bo.getPostCode(),title3); ws.addCell(labelC); ws.mergeCells(0,4,6,4); //用户单位: 邮编: RMA确认号: labelC = new jxl.write.Label(7,4 , "RMA确认号:" + bo.getEpmEqRmaVO().getRmaNo(),title3); ws.addCell(labelC); ws.mergeCells(7,4,9,4); //收货地址: 确认日期: 年 月 //联系人的地址改为收货地址 temp = i18NInfoService.getInfo( " ECC_CUST_PERSON_INFO p", " p.communication_address", " rownum=1 and p.id=" + bo.getEpmEqRmaVO().getCustPersonId()); //labelC = new jxl.write.Label(0,5 , "收货地址:" + temp); //ws.addCell(labelC); if(bo.getEpmEqRmaVO().getEvaDate()!=null && !"".equals(bo.getEpmEqRmaVO().getEvaDate()) && bo.getEpmEqRmaVO().getEvaDate().length()>10) { labelC = new jxl.write.Label(0,5 , "收货地址:" + temp,title3); ws.addCell(labelC); ws.mergeCells(0,5,6,5); labelC = new jxl.write.Label(7,5 , "确认日期:" + bo.getEpmEqRmaVO().getEvaDate().substring(0,10),title3); } else { labelC = new jxl.write.Label(0,5 , "收货地址:" + temp,title3); ws.addCell(labelC); ws.mergeCells(0,5,6,5); labelC = new jxl.write.Label(7,5 , "确认日期:" + bo.getEpmEqRmaVO().getEvaDate(),title3); } ws.addCell(labelC); ws.mergeCells(7,5,9,5); //以下栏目由用户填写 labelC = new jxl.write.Label(0,6 , "以下栏目由用户填写",title4); ws.addCell(labelC); ws.mergeCells(0,6,7,6); labelC = new jxl.write.Label(8,6 , "",title4); ws.addCell(labelC); ws.mergeCells(8,6,9,6); //序号 故障日期 产品型号 设备名称 硬件版本 序列号 设备服务号 故障描述 受理意见 备注说明 labelC = new jxl.write.Label(0,7 , "序号",title4); ws.addCell(labelC); labelC = new jxl.write.Label(1,7 , "故障日期",title4); ws.addCell(labelC); labelC = new jxl.write.Label(2,7 , "产品型号",title4); ws.addCell(labelC); labelC = new jxl.write.Label(3,7 , "设备名称",title4); ws.addCell(labelC); labelC = new jxl.write.Label(4,7 , "硬件版本",title4); ws.addCell(labelC); labelC = new jxl.write.Label(5,7 , "序列号",title4); ws.addCell(labelC); labelC = new jxl.write.Label(6,7 , "设备服务号",title4); ws.addCell(labelC); labelC = new jxl.write.Label(7,7 , "故障描述",title4); ws.addCell(labelC); labelC = new jxl.write.Label(8,7 , "受理意见",title4); ws.addCell(labelC); labelC = new jxl.write.Label(9,7 , "备注说明",title4); ws.addCell(labelC); int y=8; //setRamBoardList 明细列表迭带 for(int i=0;i<bo.getRamBoardList().size();i++) { ReturnFormItemBO rbo = new ReturnFormItemBO(); rbo = (ReturnFormItemBO)bo.getRamBoardList().get(i); ReturnFormItemVO rvo = rbo.getReturnFormItemVO(); //序号 故障日期 产品型号 设备名称 硬件版本 序列号 设备服务号 故障描述 受理意见 备注说明 labelC = new jxl.write.Label(0,y , String.valueOf(i+1),title4); ws.addCell(labelC); if(rvo.getRmaErrorDate()!=null && !"".equals(rvo.getRmaErrorDate()) && rvo.getRmaErrorDate().length()>0) { labelC = new jxl.write.Label(1,y , rvo.getRmaErrorDate(),title4); } else { labelC = new jxl.write.Label(1,y , "",title4); } ws.addCell(labelC); labelC = new jxl.write.Label(2,y , rvo.getProductmodel(),title4); ws.addCell(labelC); labelC = new jxl.write.Label(3,y , rvo.getBoardname(),title4); ws.addCell(labelC); labelC = new jxl.write.Label(4,y , rvo.getBoardedition(),title4); ws.addCell(labelC); labelC = new jxl.write.Label(5,y , rvo.getBoardid(),title4); ws.addCell(labelC); labelC = new jxl.write.Label(6,y , rvo.getFacilityServiceNO(),title4); ws.addCell(labelC); labelC = new jxl.write.Label(7,y , rvo.getError(),title4); ws.addCell(labelC); if(rvo.getRmaEvaFlag()!=null && "Y".equals(rvo.getRmaEvaFlag())) { labelC = new jxl.write.Label(8,y , "√",title4); ws.addCell(labelC); } else { labelC = new jxl.write.Label(8,y , "×",title4); ws.addCell(labelC); } labelC = new jxl.write.Label(9,y , rvo.getRmaEvaDevice(),title4); ws.addCell(labelC); y++; } //注意:1. 请将此表附在送修的故障硬件包装箱内。 //2. 请不要把不受理的故障硬件送修。 //3. 请将此表附在送修的故障硬件包装箱内。 //返修中心 labelC = new jxl.write.Label(0,y , ""); ws.addCell(labelC); ws.mergeCells(0,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(0,y , "注意:",title3); ws.addCell(labelC); labelC = new jxl.write.Label(1,y , "1. 请将此表附在送修的故障硬件包装箱内。 ",title3); ws.addCell(labelC); ws.mergeCells(1,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(1,y , "2. 请不要把不受理的故障硬件送修。 ",title3); ws.addCell(labelC); ws.mergeCells(1,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(1,y , "3. 请将此表附在送修的故障硬件包装箱内。 ",title3); ws.addCell(labelC); ws.mergeCells(1,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(0,y , "/返修中心 ",title3); ws.addCell(labelC); ws.mergeCells(0,y,9,y); y++; labelC = new jxl.write.Label(0,y , "地址: 高新技术产业园科技南路通讯维修/返修中心B2座6楼 邮政编码: 518057 ",title3); ws.addCell(labelC); ws.mergeCells(0,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(0,y , "电话: 0755-26771776 传真: 0755-26770177 ",title3); ws.addCell(labelC); ws.mergeCells(0,y,9,y); y++; //返修中心 labelC = new jxl.write.Label(0, y , "Email: RRCN@zzz.com.cn ",title3); ws.addCell(labelC); ws.mergeCells(0,y,9,y); wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } }
但要绘制下面的模板感觉却很难:
要求: 整个版面事固定的,要求需设置边框样式,内部线格式,
要求设置页边距,整个列表的长宽.
要求数据内容的填充自动适应单元格大小,尽量排版美观(单元格固定大小)
- 归档目录模板.rar (21.2 KB)
- 下载次数: 324
发表评论
-
Cas实现单点登出(single sign out)功能实现原理
2011-07-14 10:21 2895关于Cas实现单点登入(single sing on)功能的文 ... -
dbcp 连接数据库
2007-03-21 11:35 2136import org.apache.commons.poo ... -
用javascript的正则表达式来验证Email地址是否格式正确
2007-03-14 12:47 1623function CheckExists() { ... -
<select> 联动 ajax
2007-03-12 15:55 5042<!DOCTYPE HTML PUBLIC " ... -
按指定的字符把字符串分割为字符串数组
2006-11-03 14:43 2346public static String[] splitS ... -
JavaScript中函数参数的传递问题
2006-10-23 10:22 5192JavaScript中函数参数的传递问题 <Sc ... -
Java基础
2006-10-20 15:34 1441一、Java基础方面 1、作用域public,private ... -
验证码机制实现
2006-10-05 12:11 7501我们经常在登陆一些网站的时候,要求输入显示的验证码,而且验证码 ... -
Jbuilder2006中JDK的设置
2006-10-05 12:09 3003Jbuilder2006自带了1.5的JDK,但如果你还想继续 ... -
html radio框
2006-10-05 12:08 5179在显示的明细一览,每一行前面加一个radio框,让用户选择哪个 ... -
一个可一输入的Select(select和text组合)
2006-09-30 14:26 3201<HTML> <HEAD> < ... -
数值转换 double型
2006-09-29 09:10 1273从集合集合中取值转换成double new Double(( ... -
获得一组checkbox的值
2006-09-29 09:05 3790html: <form name="fo ...
相关推荐
当你需要生成包含大量格式化数据、图表或其他复杂功能的Excel报表时,POI可能是更好的选择。而如果你只需要处理基本的数据写入和格式设置,JXL可能更合适。 5. **示例代码**: 创建一个简单的Excel报表,使用POI...
在本话题中,我们将重点关注“poi jxl”这两个库,它们是Java操作Excel的重要工具,而“poi.jar”是其中的关键组件。 首先,Apache POI是一个开源项目,它提供了一个API,使得开发者可以使用Java来创建、修改和显示...
本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心文件,你需要将其添加到项目的类路径中。如果你使用的是Maven或者Gradle,...
### Java通过POI和JXL给Excel动态添加水印 #### 概述 在实际工作中,经常需要对敏感或重要的Excel文件进行保护措施,比如添加水印。这不仅可以增加文档的专业性,还可以作为版权保护的一种手段。本文将详细介绍...
本篇将详细介绍如何利用`jxl`库来操作Excel文件,并结合实例说明如何从Excel文件中提取数据并生成TXT文件。 首先,我们需要理解`jxl`库的基本结构。`jxl`库主要提供了`Workbook`、`Sheet`、`Cell`等类,分别对应...
本文将深入探讨两种常用的Java库:Apache POI和JXL,它们都提供了处理Excel文件的能力。 Apache POI是Apache软件基金会的一个开源项目,它提供了一个强大的API,允许Java开发者读取、写入和修改Microsoft Office...
在Android开发中,有时我们需要对Microsoft Office文档如Excel、Word以及PDF进行操作,这通常是由于数据导入导出、报表生成或者数据分析的需求。本项目利用Apache POI库处理doc、excel和pdf,以及使用jxl库专门处理...
- `POI整理.doc`、`Java-Excel报表开发POI.doc`和`POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf`可能是关于POI的详细教程和最佳实践。 - `JXL操作EXCEL的常用类方法参数解析.doc`可能包含jxl库中常用类和方法的...
本文将对比两种主流的Java Excel处理库:jxl和Apache POI,并探讨它们的特性和适用场景。 首先,jxl是较早的Java Excel处理库,主要用于读写Excel 97-2003格式的.XLS文件。它的API简洁,易于上手,对于简单的读写...
### Java使用POI包与JXL包操作Excel的实践心得 #### 一、引言 在实际工作中,经常需要处理Excel文件,特别是在企业级应用中,Excel作为一种常用的数据存储和交换格式,其重要性不言而喻。Java作为一款流行的企业级...
在IT行业中,处理和分析Excel数据是常见的任务,特别是在数据处理、报表生成和数据分析等领域。Apache POI和JXL是两个流行的Java库,用于读取和写入Microsoft Office格式的文件,包括Excel(.xls和.xlsx)文件。下面...
本文将深入探讨如何使用Jxl和Apache POI库来读取和写入Excel文件,同时会区分2007年之后的.xlsx格式(基于OpenXML)和2003及之前的.xls格式(基于BIFF)。 首先,让我们了解一下Jxl库。Jxl是Java Excel API的简称,...
总的来说,JXL适合简单的Excel操作,而Apache POI则更适合处理复杂的Excel任务,如样式设置、公式计算等。选择哪个库取决于项目需求和性能考虑。在实际开发中,开发者通常会根据具体场景选择合适的工具,以实现高效...
在Java开发中,导出Excel文件是常见的需求,主要用于数据报表、数据分析等场景。本话题将探讨使用Apache POI和JExcelApi(JXL)两个库来实现这一功能。这两种库都是Java中广泛使用的处理Microsoft Office文件格式的...
JXL和Apache POI是两个流行的Java库,专门用于读取、写入和操作Excel文件。下面将详细介绍这两个库以及如何利用它们实现Excel的导入导出功能。 ### JXL JXL(Java Excel API)是一个轻量级的Java库,它提供了读取...
Apache POI和JExcelAPI(JXL)是两个流行的Java库,用于读取和写入Microsoft Excel文件。本文将详细讲解如何使用这两个工具类来读取Excel数据,以及它们的特点和适用场景。 首先,让我们关注一下Apache POI。Apache...
在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域...对于更复杂的需求,可能需要考虑使用其他库,如Apache POI,它提供了更丰富的功能来处理Excel文档,包括更精细的图像操作。
`PoiUtil.java`工具类可能封装了这些基本操作,提供方便的方法,例如`readExcel()`或`readSheet()`,以简化读取Excel数据的过程。 2. **JExcelApi (JXL)**: - **Workbook接口**:与POI类似,JXL也有一个名为`...
标题"关于jxl操作excel说明以及jxl.jar包下载2.6"表明我们将探讨如何使用JXL库以及在哪里获取它的特定版本(2.6)。 首先,让我们深入了解一下JXL库。JXL是Java Excel API的简称,它提供了一套完整的API,可以创建...
标题中的“jxl读取Excel报表”指的是利用jxl库来操作Excel文件,特别是从Excel文件中提取数据以进行分析或进一步处理。以下是对这个主题的详细讲解: 首先,`jxl.jar`是jxl库的主要组件,它支持读取和写入Microsoft...