根据XML配置规则导入Excel数据(二)定义XML规则对象

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dba10g.blog.51cto.com/764602/756533

 

规则设计到三个对象。工具将XML 分三级解析。

 

              类
                      对应

xml节点

作用                                                                    
 BeansSpecification  beans    表示一个根节点,包含所有Bean定义信息。
 BeanSpecification  bean  代表bean的配置信息,包含多个propertys
 PropertySpecification  property  代表bean 的属性配置信息

 

BeansSpecification.java

package com.ivfly.xlsbean; 

import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* 1.去掉了父类 
* 2.添加单例 
*                 根元素 
*/ 
public class BeansSpecification{ 
  private static BeansSpecification instance= null; 
  public static BeansSpecification getInstance(InputStream xmlStream){ 
    if(instance== null){ 
      instance = BeansSpecificationUtil.getBeans(xmlStream); 
    } 
    return instance; 
  } 
  /** 
    * 跟元素下所有的beans 
    */ 
  private List<BeanSpecification> beans = new ArrayList<BeanSpecification>(); 

  public List<BeanSpecification> getBeans() { 
    return this.beans; 
  } 

  public void addBean(BeanSpecification field) { 
    this.beans.add(field); 
  } 

  /** 
    * 根据文件名和类名查找 
    * @param fileName 
    * @return 
    */ 
  public BeanSpecification getBean(String fileName) { 
    for (BeanSpecification bean : beans) { 
      if (FileUtil.wildcard(bean.getFileName(), fileName)||bean.getClassName().equals(fileName)) { 
        return bean; 
      } 
    } 
    return null; 
  } 
  public BeanSpecification getBeanByClassName(String className) { 
    for (BeanSpecification bean : beans) { 
      if (bean.getClassName().equals(className)) { 
        return bean; 
      } 
    } 
    return null; 
  } 

 

BeanSpecification.java

package com.ivfly.xlsbean; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.LinkedHashMap; 
import java.util.List; 
import java.util.Map; 

import org.apache.commons.beanutils.PropertyUtils; 

/** 
*    
*                 描述实体属性 
*/ 
public class BeanSpecification{ 

  private Map<String,PropertySpecification> properties = new HashMap<String,PropertySpecification>(); 

  /** 
    * 类路径名 
    */ 
  private String className; 
  /** 
    * 描述对应Class的properties 
    */ 
  private Map    describer; 
  /** 
    * 文件名 
    */ 
  private String fileName; 
  /** 
    * excel中数据记录的起点行数 
    */ 
  private Integer from; 

  /** 
    * 列标题所在行 
    */ 
  private Integer head; 

  /** 
    * 类属性和excel列名对应键值对 
    */ 
  private Map<String, String> nv=new LinkedHashMap<String,String>(); 
    
  /** 
    * 类属性和excel列名对应键值对,反过来 
    */ 
  private Map<String, String> vn=new HashMap<String,String>(); 
    
  private List<String> propertyList = new ArrayList<String>(); 

  public void addProperty(PropertySpecification field) { 
    this.nv.put(field.getName(), field.getValue()); 
    this.vn.put(field.getValue(),field.getName()); 
    this.properties.put(field.getName(), field); 
    propertyList.add(field.getName()); 
  } 

    
  public List<String> getPropertyList() { 
    return propertyList; 
  } 

  public String getClassName() { 
    return this.className; 
  } 

  public void setClassName(String classname) { 
    this.className = classname; 
  } 

  public Map<String,PropertySpecification> getProperty() { 
    return properties; 
  } 

  public String getPropertyNameByValue(String value) { 
    return vn.get(value); 
  } 
    
  public boolean nullable(String propertyName){ 
    if(this.properties.containsKey(propertyName)){ 
      return this.properties.get(propertyName).isNullable(); 
    }else return false; 
  } 

  public void setProperty(Map<String,PropertySpecification> property) { 
    this.properties = property; 
  } 

  public String getFileName() { 
    return fileName; 
  } 

  public void setFileName(String fileName) { 
    this.fileName = fileName; 
  } 

  public Integer getFrom() { 
    return from; 
  } 

  public void setFrom(Integer from) { 
    this.from = from; 
  } 

  public Integer getHead() { 
    return head; 
  } 

  public void setHead(Integer head) { 
    this.head = head; 
  } 

  public Map<String, String> getNv() { 
    return nv; 
  } 

  public void setNv(Map<String, String> nv) { 
    this.nv = nv; 
  } 

  @SuppressWarnings("unchecked") 
  public Map getDescriber() { 
    describer = new HashMap(); 
    try { 
      Class cls = Class.forName(this.className); 
      Object bean = cls.newInstance(); 
      describer = PropertyUtils.describe(bean); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return describer; 
  } 

    

 

PropertySpecification.java

package com.ivfly.xlsbean; 
/** 
*    
* 描述属性的映射 

*/ 
public class PropertySpecification { 
  /** 
    * 顺序号 没有维护 
    */ 
  private int    seq; 
  /** 
    * 格式 
    */ 
  private String formular; 
  /** 
    * 提示格式 
    */ 
  private String warringFormat; 
    
  private    String type; 
  /** 
    * 属性名 
    */ 
  private String name; 
    
  /** 
    * 列名 
    */ 
  private String value; 
    
  /** 
    * 是否可以为空 
    */ 
  private boolean nullable=true; 
    
  private int index; 

  public String getName() { 
    return name; 
  } 

  public void setName(String name) { 
    this.name = name; 
  } 

  public String getValue() { 
    return value; 
  } 

  public void setValue(String value) { 
    this.value = value; 
  } 

  public int getIndex() { 
    return index; 
  } 

  public void setIndex(int index) { 
    this.index = index; 
  } 
    
    
  public boolean isNullable() { 
    return nullable; 
  } 

  public void setNullable(boolean nullable) { 
    this.nullable = nullable; 
  } 

  @Override 
  public String toString() { 
    return "name="+name+";value="+value+";seq="+seq+";type="+type+",nullable="+nullable; 
  } 

  public int getSeq() { 
    return seq; 
  } 

  public void setSeq(int seq) { 
    this.seq = seq; 
  } 

  public String getType() { 
    return type; 
  } 

  public void setType(String type) { 
    this.type = type; 
  } 

  public String getFormular() { 
    return formular; 
  } 

  public void setFormular(String formular) { 
    this.formular = formular; 
  } 

  public String getWarringFormat() { 
    return warringFormat; 
  } 

  public void setWarringFormat(String warringFormat) { 
    this.warringFormat = warringFormat; 
  } 

 

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/756533

时间: 2024-11-10 01:34:03

根据XML配置规则导入Excel数据(二)定义XML规则对象的相关文章

根据XML配置规则导入Excel数据(一)定义XML规则

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/756528   定义Xml 导入规则.基本上为每个值对象,都应该对应一个配置Bean节点. 首先:为Xml 文件制定xsd验证文件. <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://

根据XML配置规则导入Excel数据(五)ExcelReader XLS解析类

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/756538   ExcelReader.java     package com.ivfly.xlsbean;  import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetExc

根据XML配置规则导入Excel数据(三)准备验证工具类

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/756534 没什么好说的,提供正则表达式校验.提供数据校验.当解析Excel,将Cell的值填充到Bean属性中,提供支持. ValidateUtil.java package com.ivfly.xlsbean;  import java.lang.reflect.InvocationTargetException; 

麻烦各位大神帮帮忙!C#解析xml实现对应数据库中的字段,导入excel数据到orcel数据库

问题描述 麻烦各位大神帮帮忙!C#解析xml实现对应数据库中的字段,导入excel数据到orcel数据库 我现在已经写好了导入数据库了,可是字段是定死的,预防有时候excel表格有变化,方便修改,所以解析xml,然后在xml对应字段,然后再导入到数据库中. 解决方案 用不着什么xml,根据你的需求,用一个简单的文本文件,每一行对应一个字段,和对应的excel列,然后程序读取下就可以了. 解决方案二: C#配置xml实现自动导入excel数据到数据库中对应的字段,麻烦各位大神帮帮忙!

mysql-navicat Mysql 导入Excel数据 错误代码1000

问题描述 navicat Mysql 导入Excel数据 错误代码1000 navicat Mysql 导入Excel数据 时一直错误1000 请问是什么原因 要怎么解决 解决方案 这不是错误1000,而是说有1000个错误.你贴截图就这么一点哪里知道. 解决方案二: excel中第一行的字段名必须与mysql中目标数据表的字段名相同 检查有没有空行,错误的数据类型,或者你的excel文件本身是别的数据格式 解决方案三: 估计是你的数据库数据格式跟excel等对应不上,还要注意分隔符,换行符等是

导入 excel 数据到数据库

问题描述 导入excel数据到数据库,一般都需要要求固定格式,导入前验证格式是否正确数据是否正确.关于空白行一般是由于将excel删除时只删除了数据未删除行造成的,怎么可以处理一下????能运行的具体代码?谢谢usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data.O

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web数据导入操作,导入数据操作过程包括有上传文件,预览数据,选择并提交记录等一系列操作. 关于这个插件,我在早期随笔<Bootstrap文件上传插件File Input的使用>也做了一次介绍,这是一个增强的 HTML5 文件输入控件,是一个 Bootstrap 3.x

phpexcel导入excel数据使用方法实例

 phpexcel导入excel数据使用方法,大家参考使用吧 将Excel文件数据进行读取,并且返回错误的信息   代码如下: /**      * 导入商品基本信息      */     public function importProductBasicInfo($data){         include_once 'PHPExcel.php';         include_once 'PHPExcel/IOFactory.php';         include_once 'P

struts2 xml配置中json格式数据

问题描述 struts2 xml配置中json格式数据 clientList[d+].clientaway.w+ 什么意思 可以带clientaway这个实体类中的所有属性吗 解决方案 这是正则表达式d+匹配数字w+匹配文本 clientList[d+].clientaway.w+ 可以匹配 clientList[123].clientaway.abc 之类的字符串