- 浏览: 527727 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (152)
- Ajax总结 (10)
- JavaScript总结 (44)
- Java实用程序总结 (35)
- Spring总结 (10)
- Struts总结 (5)
- Hibernate学习 (3)
- 数据库学习 (9)
- CSS学习 (4)
- XML学习 (1)
- webservice (2)
- Java设计模式 (2)
- log4j (1)
- html (1)
- Jsp/Sevlet学习 (1)
- quartz学习 (1)
- tomcat (5)
- asm (0)
- maven (3)
- cloudstack (1)
- nginx (1)
- mysql (1)
- Redis (1)
- solr (2)
- rabbitmq (5)
- ELK (3)
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
几个比较好看的button的样式 -
thegod:
请问博主,计算平均成绩那个例子,“ // 将输入的数据首先按行 ...
hadoop的编程实例 -
微生物:
good
基于Maven的web项目在Eclipse中使用Tomcat调试 -
jacking124:
这个有这样一个问题,就是jsp-api包冲突!!
基于Maven的web项目在Eclipse中使用Tomcat调试 -
u010940863:
大神,这个工具类怎么用啊!求讲解啊!
Java创建和下载excel文件
1.源代码
2.要解析的xml文件
package com.zx.str; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.zx.exception.ExcelConfigException; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * <pre> * 功能描述:EXCEL配置信息存储类 * * Author : penghuaiyi * Date : 2007-11-14 * Time : 09:22:19 * Version: 1.2 * </pre> */ public class ExcelMappingConfig { private final InputStream is; //输入流 private final String configFileName;//配置文件名称 private Map<String,Object> head=new HashMap<String,Object>();//EXCEL表头 private String className; //EXCEL文件对应类的配置信息 private String sheetNameField; //EXCEL文件工作表名称对应JAVA字段的配置信息 private Map<String,Object> title=new HashMap<String,Object>(); //EXCEL文件标题的配置信息 private List<Map<String,Object>> cells = new ArrayList<Map<String,Object>>(); //EXCEL文件数据项对应JAVA字段的配置信息 private Map<String,Object> data = new HashMap<String,Object>(); //EXCEL文件数据的配置信息 /** * <pre> * 设置EXCEL配置文件 * * @param configFilePath EXCEL配置文件路径 * 以"/"开始的,是相对于classpath根目录的路径; * 否则相对于本文件所在目录的路径 * * @throws ExcelConfigException 配置文件异常 * </pre> */ public ExcelMappingConfig(String configFilePath) throws ExcelConfigException { if(configFilePath==null) { throw new ExcelConfigException("没有初始化EXCEL配置文件!"); } try { is=getClass().getResourceAsStream(configFilePath); } catch (Exception e) { throw new ExcelConfigException("没有找到EXCEL配置文件!"); } configFileName=configFilePath; init(); } /** * <pre> * 设置EXCEL配置文件 * * @param configFile EXCEL配置文件 * * @throws ExcelConfigException 配置文件异常 * </pre> */ public ExcelMappingConfig(File configFile) throws ExcelConfigException { if(configFile==null) { throw new ExcelConfigException("没有初始化EXCEL配置文件!"); } try { is=new FileInputStream(configFile); } catch (Exception e) { throw new ExcelConfigException("没有找到EXCEL配置文件!"); } configFileName=configFile.getName(); init(); } public Map<String, Object> getHead() { return head; } public String getClassName() { return className; } public String getSheetNameField() { return sheetNameField; } public Map<String, Object> getTitle() { return title; } public List<Map<String,Object>> getCells() { return cells; } public Map<String,Object> getData() { return data; } /** * <pre> * 解析EXCEL配置文件 * * @throws ExcelConfigException 配置文件异常 * </pre> */ private void init() throws ExcelConfigException { SAXReader saxReader = new SAXReader(); Document doc; try { doc = saxReader.read(is); } catch (Exception e) { throw new ExcelConfigException("无法解析配置文件"+configFileName+"!"); } /*读取head*/ Element headElement = (Element)doc.selectSingleNode("excel-mapping-config/head"); if (headElement != null) { setMapIntegerByElementAttribute(head, headElement, "height",true); headElement = (Element)doc.selectSingleNode("excel-mapping-config/head/merge"); if(headElement ==null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/head/merge结点!"); } setMapIntegerByElementAttribute(head, headElement, "beginColumn",false); setMapIntegerByElementAttribute(head, headElement, "beginRow",false); setMapIntegerByElementAttribute(head, headElement, "endColumn",false); setMapIntegerByElementAttribute(head, headElement, "endRow",false); } /*读取className*/ Element classNameElement = (Element)doc.selectSingleNode("excel-mapping-config/className"); if (classNameElement == null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/className结点!"); } className=classNameElement.getTextTrim(); if(className==null||className.length()==0) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点excel-mapping-config/className没有设置内容!"); } /*读取sheet*/ Element sheetNode = (Element)doc.selectSingleNode("excel-mapping-config/sheet"); if(sheetNode==null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/sheet结点!"); } sheetNameField=sheetNode.attributeValue("nameField"); if(sheetNameField==null||sheetNameField.length()==0) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点excel-mapping-config/sheet结点中的nameField属性没有设置内容!"); } /*读取title*/ Element titleElement = (Element) doc.selectSingleNode("excel-mapping-config/sheet/title"); if (titleElement == null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/sheet/title结点!"); } setMapIntegerByElementAttribute(title, titleElement, "row",false); setMapIntegerByElementAttribute(title, titleElement, "height",true); setMapBooleanByElementAttribute(title, titleElement, "freeze",true); setMapBooleanByElementAttribute(title, titleElement, "checkTitleName",true); /*读取cell*/ List cellList = doc.selectNodes("excel-mapping-config/sheet/title/cell"); if(cellList==null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/sheet/title/cell结点!"); } for(Object obj:cellList) { Element cellElement=(Element)obj; Map<String,Object> cellMap=new HashMap<String,Object>(); setMapIntegerByElementAttribute(cellMap, cellElement, "column",false); setMapStringByElementAttribute(cellMap, cellElement, "field",false); setMapIntegerByElementAttribute(cellMap, cellElement, "maxLength",true); setMapStringByElementAttribute(cellMap, cellElement, "type",true); setMapStringByElementAttribute(cellMap, cellElement, "format",true); setMapIntegerByElementAttribute(cellMap, cellElement, "width",true); cellMap.put("titleName",cellElement.getTextTrim()); cells.add(cellMap); } /*读取data*/ Element dataElement = (Element) doc.selectSingleNode("excel-mapping-config/sheet/data"); if (dataElement == null) { throw new ExcelConfigException("在配置文件" + configFileName + "中没有找到excel-mapping-config/sheet/data结点!"); } setMapIntegerByElementAttribute(data, dataElement, "begin",false); setMapIntegerByElementAttribute(data, dataElement, "end",true); setMapIntegerByElementAttribute(data, dataElement, "height",true); } /** * <pre> * 取得EXCEL配置文件的一个结点元素的属性信息,校验它是否为整数,并存放在MAP中 * * @param map 存储EXCEL配置文件信息 * @param element EXCEL配置文件的一个结点元素 * @param attributeName EXCEL配置文件的一个结点元素的属性名 * @param isOptional EXCEL配置文件的一个结点元素的属性是否为可选顶 * * @throws ExcelConfigException 配置文件异常 * </pre> */ private void setMapIntegerByElementAttribute(Map<String,Object> map, Element element, String attributeName,boolean isOptional) throws ExcelConfigException { String attributeValue = element.attributeValue(attributeName); if (attributeValue == null || attributeValue.trim().length() ==0) { if(!isOptional) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点"+element.getName()+"的属性"+attributeName+"没有设置!"); } } else { try { map.put(attributeName, Integer.parseInt(attributeValue.trim())); } catch (NumberFormatException nfe) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点"+element.getName()+"的属性"+attributeName+"不是Integer类型!"); } } } /** * <pre> * 取得EXCEL配置文件的一个结点元素的属性信息,并存放在MAP中 * * @param map 存储EXCEL配置文件信息 * @param element EXCEL配置文件的一个结点元素 * @param attributeName EXCEL配置文件的一个结点元素的属性名 * @param isOptional EXCEL配置文件的一个结点元素的属性是否为可选顶 * * @throws ExcelConfigException 配置文件异常 * </pre> */ private void setMapStringByElementAttribute(Map<String,Object> map, Element element, String attributeName,boolean isOptional) throws ExcelConfigException { String attributeValue = element.attributeValue(attributeName); if (attributeValue == null || attributeValue.trim().length() ==0) { if(!isOptional) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点"+element.getName()+"的属性"+attributeName+"没有设置!"); } } else { map.put(attributeName,attributeValue.trim()); } } /** * <pre> * 取得EXCEL配置文件的一个结点元素的属性信息,校验它是否为Boolean,并存放在MAP中 * * @param map 存储EXCEL配置文件信息 * @param element EXCEL配置文件的一个结点元素 * @param attributeName EXCEL配置文件的一个结点元素的属性名 * @param isOptional EXCEL配置文件的一个结点元素的属性是否为可选顶 * * @throws ExcelConfigException 配置文件异常 * </pre> */ private void setMapBooleanByElementAttribute(Map<String,Object> map, Element element, String attributeName,boolean isOptional) throws ExcelConfigException { String attributeValue = element.attributeValue(attributeName); if (attributeValue == null || attributeValue.trim().length() ==0) { if(!isOptional) { throw new ExcelConfigException("在配置文件" + configFileName + "中结点"+element.getName()+"的属性"+attributeName+"没有设置!"); } } else { map.put(attributeName, Boolean.valueOf((attributeValue.trim()))); } } }
2.要解析的xml文件
<?xml version="1.0" encoding="UTF-8"?> <!--Excel文件格式配置信息--> <excel-mapping-config> <!-- EXCEL表头,仅用于导出时(可选项) 属性 说明 height :EXCEL头单元格高度(可选项) --> <head height="600"> <!-- 合并EXCEL表头单元格,若设置头部,则为必选项 属性 说明 beginColumn :合并起始列位置索引(从0开始计数) beginRow :合并起始行位置索引(从0开始计数) endColumn :合并终止列位置索引(从0开始计数) endRow :合并终止行位置索引(从0开始计数) --> <merge beginColumn="0" beginRow="0" endColumn="7" endRow="0"/> </head> <!-- 与EXCEL文件数据对应的JAVA类 说明: 1. 该类必须提供公有的默认构造方法 2. 映射字段对应成员必须提供公有的set方法和get方法 3. 映射字段对应成员类型可以为字符类型(java.lang.String), 数字类型(java.lang.Double), 日期类型(java.util.Date) 4.导入时建议实现接口com.iman.lts.common.excel.entity.IBaseExcel --> <className>com.iman.common.excel.example.Example</className> <!-- EXCEL文件工作表配置信息 属性 说明 nameField :工作表名称所对应JAVA类的字段名称 --> <sheet nameField="sheetName"> <!-- EXCEL文件标题配置信息 属性 说明 row :标题行位置索引(从0开始计数) height :标题单元格高度,仅用于导出时(可选项) freeze :是否冻结{true,false},默认false,仅用于导出时(可选项) checkTitleName:是否校验标题名称{true,false},默认false,仅用于导入时(可选项) --> <title row="1" height="400" freeze="true" checkTitleName="false"> <!-- EXCEL文件数据元素配置信息 属性 说明 column :列位置索引,从0开始计数 field :数据元素所对应JAVA类的字段名称 type :数据类型{Double,Date,String},默认String(可选项) format :数据格式,只可用于Double和Date类型(可选项) maxLength:数据元素的最大长度,用于String类型,默认全部长度;若超过最大长度,则截取到最大长度,仅用于导入时(可选项) width :数据元素单元格宽度,仅用于导出时(可选项) --> <cell column="0" field="id" type="Double" format="#">编号</cell> <cell column="1" field="name" width="15">姓名</cell> <cell column="2" field="age" type="Double" format="#">年龄</cell> <cell column="3" field="birthday" type="Date" format="yyyy-MM-dd" width="15">出生日期</cell> <cell column="4" field="salary" type="Double" format="#.00" width="20">薪水</cell> <cell column="5" field="bonus" type="Double" format="#.00" width="20">奖金</cell> <cell column="6" field="statDate" type="Date" format="yyyy-MM-dd HH:mm:ss" width="25">统计时间</cell> <cell column="7" field="remark" maxLength="200" width="50">备注</cell> </title> <!-- 数据属性配置信息 属性 说明 begin :数据元素的起始行,从0开始计数 end :数据元素的结束行,从0开始计数,默认到最后一行,仅用于导入时(可选项) height :数据元素单元格高度,仅用于导出时(可选项) --> <data begin="2" end="" height="300"/> </sheet> </excel-mapping-config>
发表评论
-
HttpClient请求调用封装
2014-04-04 16:35 26741. maven依赖包下载 <!-- httpcl ... -
Json转换工具类JsonUtil
2014-04-04 14:08 272961. maven依赖包下载 <!--json-li ... -
POI操作Excel文件
2014-03-14 12:01 14261. ExcelBean.java package com ... -
Java生成随机验证码
2014-02-27 18:03 8653package com.tg.snail.core.util ... -
hadoop的编程实例
2013-09-17 22:47 45675原文链接:http://www.cnblogs.c ... -
Array,List分页代码
2013-08-30 17:39 1759package com.snail.util; imp ... -
使用Google的Gson实现对象和json字符串之间的转换
2013-08-09 16:00 61788使用Google的Gson实现对象和json字符串之间的转换 ... -
一般加密和解密工具类
2013-07-12 16:38 1328package com.snail.util; im ... -
Java自带的MD5加密算法
2013-07-12 16:12 1687package com.snail.util; impo ... -
Java并发编程-Executor
2012-09-25 11:24 1256Executor框架是指java 5中引入的一系列并发库中与e ... -
MD5加密
2011-12-14 13:03 810package com.config; import j ... -
Java实现的代码生成器
2011-09-09 13:23 2402package test; import java.io ... -
Java性能优化总结
2011-08-24 17:53 2123... -
Java读写文本文件操作
2011-07-27 13:52 3034package com.test; import jav ... -
Java创建和下载excel文件
2011-07-27 11:38 7806package com.g3.hrp.customer_s ... -
Java反射操作(需要commons-beanutils-1.8.2.jar)
2011-07-05 13:41 1172Java反射操作(需要commons-beanutils-1. ... -
正则表达式替换sql语句中的参数
2011-03-29 16:46 3711import java.util.ArrayList; im ... -
Java读取MAC地址
2011-02-15 09:41 1520Java读取MAC地址程序 package org.reve ... -
JAVA上传文件比较与实例
2010-11-12 16:26 4461JAVA上传文件比较与实例 jsp文件上传大多采用采用开源项目 ... -
图片工具类,完成图片的截取,缩放(ImageHepler )
2010-11-12 15:34 1227package com.lz.hr_picture.helpe ...
相关推荐
在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...
为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
以下是如何使用DOM4j解析XML: 1. 引入DOM4j库(如:dom4j-1.6.1.jar)。 2. 创建DocumentFactory实例。 3. 使用DocumentFactory的read()方法读取XML文件,得到Document对象。 4. 使用Document对象提供的方法(如...
### 使用DOM4j解析XML文件:提升开发效率与代码可读性 在现代软件开发中,XML(Extensible Markup Language)是一种广泛使用的数据交换格式,它以人类可读的文本形式存储结构化信息。然而,如何高效、准确地解析XML...
在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...
本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...
【使用dom4j解析XML】 dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 *...
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
**DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...
在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...