- 浏览: 309947 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 803JSP禁用缓存常用方法 jsp页面禁止缓存设置 1.客户端 ... -
抽象工厂模式
2011-03-18 15:16 974抽象工厂模式中的有以 ... -
单实例Singleton设计模式
2011-03-10 10:29 1104单实例Singleton设计模式 ... -
JAVA获取服务器路径
2010-09-28 20:36 3570获取服务器路径 在JSF环境中获取到ServletConte ... -
模拟随机发牌
2010-08-17 19:47 1287public void testinit(){ ... -
java web 标签.CHM
2010-08-17 19:26 829Struts2、Struts1、jstl、jsf、spring ... -
java反编译器
2010-08-11 17:38 982java反编译器 -
金额数字转中文大写
2010-08-07 13:31 1372金额数字转中文大写 处理能力: 整数部分:99999999 ... -
获取指定路径下的所有文件
2010-07-23 16:24 1113package test; import java. ... -
已知最大值的高效排序算法
2010-06-10 10:54 1069有一组数据3,5,9,7,4,13,15,0,2,20.已知最 ... -
错误页面跳转解决办法
2010-06-09 15:50 1308错误页面跳转解决办法 在web.xml中配置错误页面跳转如下 ... -
web系统图标资源
2009-12-21 16:04 1257http://open-open.com/ajax/ajax2 ... -
Think in java3(中文完整版)
2009-12-17 23:09 1074Think in java3(中文完整版) -
用jar命令将Web应用打包成war文件的简单方法
2009-12-17 17:16 1273假定有一个Web应用:C:\myHome myHome/WE ... -
JAVA编程思想
2009-12-15 14:14 765JAVA编程思想 -
Java调用dll实现des加密解密
2009-12-10 16:42 3110package com.srcb.common; p ... -
Java开发--常用网站
2009-11-12 11:13 8261.jar查找: http://www.findjar.com ... -
指定目录输出日志(根据日期和操作员信息)
2009-11-09 14:24 1071package com.microjava.log; ... -
趣味题笔记
2009-10-29 19:29 949一个农夫养了一头牛, ... -
几种不同的算法实现小时候玩的扑克牌游戏
2009-08-04 16:04 1826记得小时候看到别人玩的一个游戏,给他一定个数有大小次序的 ...
相关推荐
Java-Excel开发包 jxl.jar 可用Java来操作Excel,读取,写入
NULL 博文链接:https://yuanyuan7891.iteye.com/blog/656388
java操纵excel的jar包
java操作excel所需jar包
jxl excel java excel导入数据库 java操作excel 数据库是mysql
java直接操作excel文件,JXL是韩国的以为开发人员编写,与poi相比功能是简单了点,但是对于普通的一些开发是完全可以满足需求
java读取Excel文件-jxl附件列表: ReadAndWriteExcel.java (5.52 KB) jxl.jar (688.03 KB) jxl读Excel文件.doc (88.50 KB)
java导入导出excel操作(jxl) Java解释Excel数据(jxl.jar包的使用) 支持Excel 95-2000的所有版本 生成Excel 2000标准格式 支持字体、数字、日期操作 能够修饰单元格属性 支持图像和图表 应该说以上功能已经能够...
java读取excel java操作excel jxl API
JAVA操作Excel(jxl使用介绍).pdf
java操作Excel java操作Excel java操作Excel
jxl操作excel实例,jxl jar包下载 jxl操作excel实例,jxl jar包下载 jxl操作excel实例,jxl jar包下载
Java操作Excel之JXL,实际的操作实例。对开发excel很很有用哦
java解析excel时使用的jxl.jar包
包含Java操作Excel的jxl.jar包
通过java操作excel表格的工具类库 支持Excel 95-2000的所有版本 生成Excel 2000标准格式 支持字体、数字、日期操作 能够修饰单元格属性 支持图像和图表
Java Excel读写组件jxl使用 例如导出ofice文件
jxl的excel读写操作 java操作excel的读写。
java中使用jxl打印excel报表,java中使用jxl打印excel报表,java中使用jxl打印excel报表