- 浏览: 321092 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
js调用excel、word打印 -
jyangzi5:
[u][/u]引用
常见hibernate面试题 -
wangv:
<code="java">Sy ...
常见hibernate面试题 -
bardo:
建议看看这一个
http://bardo.iteye.com ...
金额数字转中文大写 -
dotjar:
在继续讲解HQL其他更为强大的查询功能前,我们先来讲解以下利用 ...
常见hibernate面试题
根据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; } }
- ExcelUtilsDemo.rar (664.4 KB)
- 下载次数: 33
发表评论
-
JSP禁用缓存常用方法
2013-10-24 09:14 863JSP禁用缓存常用方法 jsp页面禁止缓存设置 1.客户端 ... -
抽象工厂模式
2011-03-18 15:16 1022抽象工厂模式中的有以 ... -
单实例Singleton设计模式
2011-03-10 10:29 1145单实例Singleton设计模式 ... -
JAVA获取服务器路径
2010-09-28 20:36 3617获取服务器路径 在JSF环境中获取到ServletConte ... -
模拟随机发牌
2010-08-17 19:47 1364public void testinit(){ ... -
java web 标签.CHM
2010-08-17 19:26 914Struts2、Struts1、jstl、jsf、spring ... -
java反编译器
2010-08-11 17:38 1065java反编译器 -
金额数字转中文大写
2010-08-07 13:31 1471金额数字转中文大写 处理能力: 整数部分:99999999 ... -
获取指定路径下的所有文件
2010-07-23 16:24 1166package test; import java. ... -
已知最大值的高效排序算法
2010-06-10 10:54 1165有一组数据3,5,9,7,4,13,15,0,2,20.已知最 ... -
错误页面跳转解决办法
2010-06-09 15:50 1395错误页面跳转解决办法 在web.xml中配置错误页面跳转如下 ... -
web系统图标资源
2009-12-21 16:04 1331http://open-open.com/ajax/ajax2 ... -
Think in java3(中文完整版)
2009-12-17 23:09 1156Think in java3(中文完整版) -
用jar命令将Web应用打包成war文件的简单方法
2009-12-17 17:16 1339假定有一个Web应用:C:\myHome myHome/WE ... -
JAVA编程思想
2009-12-15 14:14 836JAVA编程思想 -
Java调用dll实现des加密解密
2009-12-10 16:42 3157package com.srcb.common; p ... -
Java开发--常用网站
2009-11-12 11:13 8781.jar查找: http://www.findjar.com ... -
指定目录输出日志(根据日期和操作员信息)
2009-11-09 14:24 1108package com.microjava.log; ... -
趣味题笔记
2009-10-29 19:29 998一个农夫养了一头牛, ... -
几种不同的算法实现小时候玩的扑克牌游戏
2009-08-04 16:04 1907记得小时候看到别人玩的一个游戏,给他一定个数有大小次序的 ...
相关推荐
### jxl库在Java中用于读取Excel的关键知识点解析 #### 一、jxl库简介与功能 jxl是Java Excel API的一个实现,主要用于...通过实践这些代码片段,你可以更深入地理解如何利用jxl库在Java应用中高效地操作Excel数据。
在日常工作中,尤其是在处理Excel文件时,我们通常会面临选择合适的Java库来完成任务的问题。JXL和POI是两个广泛使用的库,它们各有优势和局限性。 **JXL(JExcel API)** 是一个较早出现的库,主要适用于处理早期...
这个综合运用例子对于学习如何在实际项目中结合使用Java、JXL和Log4j非常有帮助。通过实践,开发者可以更好地理解这些工具的功能和它们在协同工作时的潜力。同时,这样的例子也可以作为模板,帮助其他开发者快速构建...
在早期的Java应用中,JXL是常见的选择,不过随着POI的发展,现在更多地被用于复杂的Excel操作。 这个项目的核心功能是允许用户通过前端界面提交数据,然后这些数据会被Struts2的Action处理,并使用POI或JXL库写入到...
Java导出Excel是一个综合性的技术点,涉及数据库查询、数据处理、文件操作等多个方面。通过合理选择和配置相关库,结合有效的数据处理策略,可以实现在各种场景下高效、准确地导出Excel文件。在具体实践中,还需注意...
综合以上,通过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工作簿,创建工资表,自动计算各项福利,...
### jsp导excel到mysql:综合知识解析 在IT领域,特别是Web开发中,数据迁移与处理是一项常见的任务。从给定的文件标题、描述、...这些技术的综合应用,可以高效地实现数据迁移任务,是Web开发中不可或缺的技能之一。
通过这些库,开发者可以方便地在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文件,方便用户进行数据分析或备份。"修改"和"添加"功能则涉及到数据库...