- 浏览: 86761 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (110)
- java (110)
- Comparing PHP Frameworks ( Symfony (1)
- CakePHP (1)
- YII and CodeIgniter) (1)
- spring定时任务的实现 (1)
- 获得一个节点对象的节点类型 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- 常用命令收集(系统设置) (1)
- openlayers 应用Google图层你必须做的 (1)
- Shell Sort in Java (1)
- Java网络编程 (1)
- 删除more里面的Edit (1)
- Android颜色选择器 (1)
- Linux安全配置步骤简述 (1)
- 职场官话 (1)
- TOMCAT常用优化 (1)
- 2008 ==> 2009 (1)
- 01_Android介绍 (1)
- HTML特殊字符 (1)
- 终于完成一个最重要的任务——找工作 (1)
- java 加密算法 base64 (1)
- 《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读 (1)
- 由ORM框架设计看到微软与苹果的最大差别 (1)
- 通过发微博控制电脑的程序源码 (1)
- flex入门 (1)
- JS合并单元格、JavaScript单元格合并 (1)
- 各种常用编译开关位置 (1)
- 单一入口应用程序概述 (1)
- [转]Cocoa中回调delegate的方法时判断delegate是否已经被释放 (1)
- java简单的通用ajax分页方法 (1)
- /dev/shm放/tmp (1)
- Java中HashMap排序和遍历 . (1)
- Chrome+SwitchySharp+myentunnel+SSH (1)
- LINUX-网卡Bond (1)
最新评论
-
ken890202:
java简单的通用ajax分页方法 -
hanmiao:
真够乱的,什么都看不清。
Linux安全配置步骤简述 -
houxinyou:
说一下我自己的想法.苹果只是做一款相同的东西,然后是完善.有什 ...
由ORM框架设计看到微软与苹果的最大差别 -
delphixp:
微软技术方案很多?。。。。Java 系统笑而不语。。。
由ORM框架设计看到微软与苹果的最大差别 -
huchiwei:
同意楼上说法。这代码....怎么看!!
web应用dao层的开发经验小结
根据excel模板生成excel报表文件--用于报表打印
jxl修改excel模板文件,实现动态数据分页打印
1.支持公式运算
2.支持对合并的单元格复制
生成分页模板
jxl修改excel模板文件,实现动态数据分页打印
1.支持公式运算
2.支持对合并的单元格复制
package mcfeng.util.excel;import java.io.file;import java.io.ioexception;import jxl.celltype;import jxl.workbook;import jxl.format.cellformat;import jxl.read.biff.biffexception;import jxl.write.label;import jxl.write.writablecell;import jxl.write.writablesheet;import jxl.write.writableworkbook;import jxl.write.writeexception;import jxl.write.biff.rowsexceededexception;import mcfeng.util.exceldatasource;import mcfeng.util.moneyutil;import mcfeng.util.stringutil;public class exceleditbymodel { //list中取数据 private final static string list_flag = "##"; //map中取数据 private final static string map_flag = "#&"; //数字类型处理,支持公式 private final static string num_flag = "#_&"; //大写金额处理 private final static string dx_flag = "##d&"; public static void editexcel(int totalpage,string sourcefile, string targetfile) { file file1 = new file(sourcefile); file file2 = new file(targetfile); editexcel(totalpage,file1, file2); } public static void editexcel(int totalpage,file sourcefile, file targetfile) { string mycellvalue = null; workbook wb = null; try { // 构造workbook(工作薄)对象 wb = workbook.getworkbook(sourcefile); } catch (biffexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } writableworkbook wwb = null; try { // 首先要使用workbook类的工厂方法创建一个可写入的工作薄(workbook)对象 wwb = workbook.createworkbook(targetfile, wb); } catch (ioexception e) { e.printstacktrace(); } if (wwb != null) { // 读取第一张工作表 // workbook的getsheet方法的参数,表示工作表在工作薄中的位置 writablesheet ws = wwb.getsheet(0); int scale = ws.getsettings().getscalefactor();// 获取页面缩放比例 int rownum = ws.getrows(); int colnum = ws.getcolumns(); //计算出每页行数 int pagenum = rownum/totalpage; for (int j = 0; j < rownum; j++) { // 得到当前行的所有单元格 //计算出取数据的位置 int datanum = j/pagenum; for (int k = 0; k < colnum; k++) { // 对每个单元格进行循环 writablecell mywc = ws.getwritablecell(k, j); system.out.println("mywc.gettype(): " + mywc.gettype()); if (mywc.gettype() == celltype.label) { label l = (label) mywc; string cellvalue = l.getcontents(); //处理后的值 string opvalue = null; system.out.println("cellvalue: " + cellvalue); // 处理excel单元格中#开头的字符串 if (cellvalue != null && cellvalue.startswith("#")) { if (cellvalue.startswith(list_flag)) { if(cellvalue.startswith(dx_flag)) { opvalue = cellvalue.replaceall(dx_flag, ""); } else { opvalue = cellvalue.replaceall(list_flag, ""); } if (stringutil.isnumeric(opvalue)) { mycellvalue = exceldatasource.getdata(opvalue,datanum); if(cellvalue.startswith(dx_flag)) { mycellvalue = moneyutil.amounttochinese(mycellvalue); } } } else if (cellvalue.startswith(map_flag)) { opvalue = cellvalue.replaceall(map_flag, ""); mycellvalue = exceldatasource.getdata(opvalue,datanum); } else if (cellvalue.startswith(num_flag)) { //支持公式运算 opvalue = cellvalue.replaceall(num_flag, ""); mycellvalue = exceldatasource.getdata(opvalue,datanum); system.out.println("mycellvalue: " + mycellvalue); //获取字体,重新设置 cellformat wcff = mywc.getcellformat(); jxl.write.number num = new jxl.write.number(k,j,double.valueof(mycellvalue),wcff); try { ws.addcell(num); } catch (rowsexceededexception e) { e.printstacktrace(); } catch (writeexception e) { e.printstacktrace(); } continue; } l.setstring(mycellvalue); } } } } //设置页面缩放比例 ws.getsettings().setscalefactor(scale); try { // 写入 excel 对象 wwb.write(); // 关闭可写入的 excel 对象 wwb.close(); // 关闭只读的 excel 对象 wb.close(); } catch (ioexception e) { e.printstacktrace(); } catch (writeexception e) { e.printstacktrace(); } } }}
生成分页模板
package mcfeng.util.excel;import java.io.file;import java.io.ioexception;import jxl.range;import jxl.workbook;import jxl.read.biff.biffexception;import jxl.write.writablecell;import jxl.write.writablesheet;import jxl.write.writableworkbook;import jxl.write.writeexception;import jxl.write.biff.rowsexceededexception;public class exceleditbymodelpage { public static void editexceltomodel(int totalpage,string sourcefile, string targetfile) { file file1 = new file(sourcefile); file file2 = new file(targetfile); editexceltomodel(totalpage, file1,file2); } public static void editexcelbymodelpage(int totalpage,string sourcefile,string tempfile, string targetfile) { file file1 = new file(sourcefile); file file2 = new file(tempfile); file file3 = new file(targetfile); editexcelbymodelpage(totalpage, file1,file2,file3); } public static void editexcelbymodelpage(int totalpage, file sourcefile,file tempfile, file targetfile) { if(totalpage == 1) { exceleditbymodel.editexcel(totalpage, sourcefile, targetfile); return; } //需要分页时,生成中间模板文件 exceleditbymodel.editexcel(totalpage,editexceltomodel(totalpage,sourcefile,tempfile), targetfile); } // 生成分页模板 public static file editexceltomodel(int totalpage, file sourcefile,file targetfile) { workbook wb = null; try { // 构造workbook(工作薄)对象 wb = workbook.getworkbook(sourcefile); } catch (biffexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } writableworkbook wwb = null; try { // 首先要使用workbook类的工厂方法创建一个可写入的工作薄(workbook)对象 wwb = workbook.createworkbook(targetfile, wb); } catch (ioexception e) { e.printstacktrace(); } if (wwb != null) { // 读取第一张工作表 // workbook的getsheet方法的参数,表示工作表在工作薄中的位置 writablesheet ws = wwb.getsheet(0); int scale = ws.getsettings().getscalefactor();// 获取页面缩放比例 int rownum = ws.getrows(); int colnum = ws.getcolumns(); system.out.println("rownum: " + rownum); system.out.println("colnum: " + colnum); //找出合并的单元格 range[] ranges = ws.getmergedcells(); for(int rnum = 0;rnum < ranges.length;rnum++) { system.out.println("左上行数" + ranges[rnum].gettopleft().getrow()); system.out.println("左上列数" + ranges[rnum].gettopleft().getcolumn()); system.out.println("右下行数" + ranges[rnum].getbottomright().getrow()); system.out.println("右下列数" + ranges[rnum].getbottomright().getcolumn()); } int i = 1; while (i < totalpage) { for (int row = 0; row < rownum; row++) { // 得到当前行的所有单元格 for (int col = 0; col < colnum; col++) { // 对每个单元格进行循环 // 复制单元格 writablecell cell = ws.getwritablecell(col, row) .copyto(col, row + (rownum*i)); try { ws.addcell(cell); } catch (rowsexceededexception e) { e.printstacktrace(); } catch (writeexception e) { e.printstacktrace(); } } } //按照模板合并单元格 for(int rnum = 0;rnum < ranges.length;rnum++) { int lcol = ranges[rnum].gettopleft().getcolumn(); int lrow = ranges[rnum].gettopleft().getrow() + (rownum*i); int rcol = ranges[rnum].getbottomright().getcolumn(); int rrow = ranges[rnum].getbottomright().getrow() + (rownum*i); try { ws.mergecells(lcol, lrow, rcol, rrow); } catch (rowsexceededexception e) { e.printstacktrace(); } catch (writeexception e) { e.printstacktrace(); } } i++; } //设置页面缩放比例 ws.getsettings().setscalefactor(scale); } try { // 写入 excel 对象 wwb.write(); // 关闭可写入的 excel 对象 wwb.close(); // 关闭只读的 excel 对象 wb.close(); } catch (ioexception e) { e.printstacktrace(); } catch (writeexception e) { e.printstacktrace(); } return targetfile; }}
发表评论
-
LINUX-网卡Bond
2012-02-08 15:22 893网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本 ... -
Chrome+SwitchySharp+myentunnel+SSH
2012-02-04 17:14 1889? <p style="margin ... -
Java中HashMap排序和遍历 .
2012-02-03 10:29 1953<div id="article_co ... -
/dev/shm放/tmp
2012-02-02 17:14 928呵呵,有时候不懂装懂的人挺搞笑的哈 转http://z ... -
java简单的通用ajax分页方法
2012-02-02 12:44 1799发表一个自己常用的分页的通用代码,实现了ajax分页。 ... -
[转]Cocoa中回调delegate的方法时判断delegate是否已经被释放
2012-01-31 16:58 1098<p>http://pingguohe.n ... -
单一入口应用程序概述
2012-01-11 14:03 683什么是单一入口应用程序? 在解释什么是单一入口应用 ... -
各种常用编译开关位置
2012-01-11 12:54 695vendor\third-party\products ... -
JS合并单元格、JavaScript单元格合并
2011-12-28 14:08 1110<span style="font-f ... -
flex入门
2011-12-28 12:23 875<span style="fon ... -
通过发微博控制电脑的程序源码
2011-12-20 12:29 1289前段时间看群里挺多讨论 微博api,正好前几天看到有个 ... -
由ORM框架设计看到微软与苹果的最大差别
2011-12-20 09:59 1373一不小心加入水 ... -
《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读
2011-12-15 11:04 1257我经常到南方报业提供的网址下载他们出版的报纸看,今天突 ... -
java 加密算法 base64
2011-12-14 17:58 900<span style="color: ... -
终于完成一个最重要的任务——找工作
2011-12-14 14:54 630</span></span>& ... -
HTML特殊字符
2011-12-14 10:54 697最近在做某种模拟器上的网页的显示,需要考虑HTML特殊 ... -
01_Android介绍
2011-12-13 10:44 598? <h4 style="margin ... -
2008 ==> 2009
2011-12-13 10:39 601发现时间过的真的很快,这么快,又是新的一年了。特地翻出 ... -
TOMCAT常用优化
2011-12-12 16:04 667<p class="MsoNorm ... -
职场官话
2011-12-12 12:29 563官场充斥着官话,职场也满是官话,可能你没有注意到而已。 ...
相关推荐
在日常工作中,尤其是在处理Excel文件时,我们通常会面临选择合适的Java库来完成任务的问题。JXL和POI是两个广泛使用的库,它们各有优势和局限性。 **JXL(JExcel API)** 是一个较早出现的库,主要适用于处理早期...
### jxl库在Java中用于读取Excel的关键知识点解析 #### 一、jxl库简介与功能 jxl是Java Excel API的一个实现,主要用于...通过实践这些代码片段,你可以更深入地理解如何利用jxl库在Java应用中高效地操作Excel数据。
这个综合运用例子对于学习如何在实际项目中结合使用Java、JXL和Log4j非常有帮助。通过实践,开发者可以更好地理解这些工具的功能和它们在协同工作时的潜力。同时,这样的例子也可以作为模板,帮助其他开发者快速构建...
在早期的Java应用中,JXL是常见的选择,不过随着POI的发展,现在更多地被用于复杂的Excel操作。 这个项目的核心功能是允许用户通过前端界面提交数据,然后这些数据会被Struts2的Action处理,并使用POI或JXL库写入到...
综合以上,通过Apache POI和JExcelAPI,我们可以方便地在Java应用程序中处理Excel文件的导入和导出。同时,结合Apache Commons FileUpload,我们可以实现文件上传功能,从而让用户上传Excel文件供程序进一步处理。...
jxl不仅支持基本的读写操作,还包括单元格样式设置、公式处理、图表操作等特性,使得Java开发者无需直接操作Excel应用程序,就能在程序中处理Excel数据。 然而,压缩包子文件的文件名称列表包含的是:"jquery-ui.js...
Java中处理Excel文件通常使用第三方库,如Apache POI或jxl。这里提到的`jxl.jar`就是jxl库,它允许我们读取、写入和修改Excel文件。jxl库支持.xls格式,即Excel 97-2007的文件格式。 2. **jxl库的使用**: - **导...
- 掌握jxl操作Excel文件的基本原理。 - 掌握如何在Excel文件中写入数据。 - 掌握如何从Excel文件中读取数据。 这些目标旨在使学生能够独立完成简单的Excel文件操作任务,并为进一步学习更高级的数据处理技巧打下...
21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存...
21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存...
再者,jxl是一个用于读写Excel文件的Java库,它在本项目中被用来实现工资代发功能。在银行系统中,批量处理员工工资发放是常见的业务需求,jxl库允许程序动态生成或读取Excel工作簿,创建工资表,自动计算各项福利,...
通过这些库,开发者可以方便地在Java应用程序中进行Excel数据的导入、导出和复杂操作,提高了工作效率并降低了与Excel交互的复杂性。这些库的使用不仅简化了代码,还使得项目更易于维护和扩展。
开发者利用 Struts、Spring 和 Hibernate 实现了系统的业务逻辑,同时利用 Jxl 进行 Excel 操作,增强了系统的功能。 - **成都敬业房产公司会员管理系统**:这个系统分为前台和后台,开发者使用了类似的技术栈,...
总的来说,企业信息管理系统是一个集成了多种先进技术和工具的综合性平台,它利用JSP和Java的强大功能,结合Ajax提高交互性,通过javamail、DisplayTag、jxl和poi处理数据展示和导出,以及生成定制的Word报告,以...
综合以上,这个随机点名小系统是一个集成了Java编程、数据库操作、数据处理和用户友好界面的综合应用,它展示了Java在教育领域中的实际应用。通过理解这些知识点,不仅可以了解该系统的运作方式,也能为类似项目的...
这个"POI打印全面经典资料.zip"压缩包显然包含了一系列关于如何使用POI库进行Excel操作的重要资源,包括JXL API和POI API的文档、教程以及一些综合性的POI使用案例。以下是对这些知识点的详细说明: 1. **JXL API**...
在功能实现上,“导出信息表”功能允许用户将客户信息导出为文件,这可能是通过读取数据库中的数据,然后利用jxl-2.6.12.jar库将数据写入Excel文件,方便用户进行数据分析或备份。"修改"和"添加"功能则涉及到数据库...