- 浏览: 223293 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (124)
- strut2 JSON使用 (1)
- 个人实现 (2)
- Oracle存储过程总结 基本应用 (0)
- Oracle (6)
- spring (9)
- View模板 (1)
- S2SH (5)
- JSP (2)
- CSS (1)
- java组件 (5)
- 需求分析、概要设计、详细设计析义 (1)
- Jboss (1)
- tomcat (2)
- ubuntu (6)
- 项目管理 (0)
- jquery (2)
- myeclipse (2)
- .net (1)
- extjs (1)
- SQL Server 2005 (1)
- web (1)
- jbpm (2)
- log4j (1)
- SVN (1)
- 其他博客参考 (1)
- mysql (1)
- J2EE (1)
- play! frameword (2)
- flex (1)
- Lucene (2)
- HTML (1)
- Web 应用 (1)
- sqlserver2000 (1)
- weblogic (0)
- PHP (2)
- nginx (1)
- 常见问题 (1)
最新评论
-
chenghong726:
有完整代码吗?
导入Excel工具(java公用工具)示例 -
wellway:
去不掉啊,是否还要其他设置?
Jquery UI dialog 关闭按钮消除 -
zcdnsz:
免费的一般没有~~~~因为jsp的这个东西太耗费资源了.... ...
一个提供jsp免费空间的网站(转) -
xmllong:
楼主写错了吧,是eclipse的插件,在MYECLIPSE里面 ...
MyEclipse安装struts2插件(转)
导入Excel工具(java公用工具)示例
- 博客分类:
- java组件
1、编写辅助类
2、配置文件(模板文件)
3、spring配置,指定加载时调用初始化方法
package xxxx.xx; import java.io.Serializable; import java.io.InputStream; import java.util.HashMap; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdom.Element; import org.jdom.Document; import org.jdom.input.SAXBuilder; /** * 辅助类 * @author zhanghao */ public class ParserHelper implements Serializable{ private String fileName = "exg-file-config.xml"; //Excel结构配置文件 //可纳入spring管理,通过spring注入 public void setFileName(String fileName){ this.fileName = fileName; } private HashMap map = new HashMap(); protected Log log ; /** * 默认构造函数 */ public ParserHelper(){ } /** * 初始化 * 纳入spring管理,可指定初始化方法 * 如: * <bean name="parserHelper" class="com.xxx.xxx.ParserHelper" init-method="initConfig"> * <property name="fileName"><value>exg-file-config.xml</value></property> * </bean> */ public void initConfig(){ SAXBuilder sb = new SAXBuilder(); // 新建立构造器 InputStream in = getClass().getClassLoader().getResourceAsStream(fileName); log.debug("in = " + in); Document doc = null; try{ doc = sb.build(in); }catch(Exception e){ e.printStackTrace(); } Element root = doc.getRootElement(); parseRoot(root); //解析 } /** * 解析xml,初始化map */ protected void parseRoot(Element root){ java.util.List list = root.getChildren(); for(int i = 0 ; i < list.size() ; i++){ Element element = (Element)list.get(i); String functionNo = element.getAttributeValue("no"); log.debug("functionNo=" + functionNo); if(functionNo == null){ continue; }else{ map.put(functionNo , buildSheetContent(functionNo , element)); } } } /** * 构建预定义结构 * 包含内容:sheet页--》index 开始行--> row-start 开始列--> column-start */ protected SheetContent buildSheetContent(String key , Element element){ SheetContent sc = new SheetContent(); Element sheet = element.getChild("sheet"); sc.setIndex(Integer.parseInt(sheet.getAttributeValue("index"))); log.debug(">> : index=" + sc.getIndex()); sc.setRowStart(Integer.parseInt(sheet.getAttributeValue("row-start"))); log.debug(">> : row-start=" + sc.getColStart()); sc.setColStart(Integer.parseInt(sheet.getAttributeValue("column-start"))); log.debug(">> : column-start=" + sc.getRowStart()); List children = sheet.getChildren("column"); String[] columns = new String[children.size()]; log.debug("column count=" + children.size()); for(int i = 0 ; i < children.size() ; i++){ columns[i] = ((Element)children.get(i)).getTextTrim(); log.debug(">> : column=" + columns[i]); } sc.setColumn(columns); return sc; } /** * 取得【配置文件中某一结构的所有[属性名称/字段名称]】 */ public SheetContent getSheetContent(int functionNo){ return (SheetContent)map.get("" + functionNo); } }
package com.nstc.dpms.server.exg; import java.io.Serializable; /** * excel结构封装 */ public class SheetContent implements Serializable{ private int index = 0; private int rowStart = 1; //开始行 private int colStart = 1; //开始列 private String[] column = null; //映射列(属性)名称集合 public SheetContent(){ } public int getColStart() { return colStart; } public void setColStart(int colStart) { this.colStart = colStart; } public String[] getColumn() { return column; } public void setColumn(String[] column) { this.column = column; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public int getRowStart() { return rowStart; } public void setRowStart(int rowStart) { this.rowStart = rowStart; } }
import java.util.List; import java.io.FileInputStream; import xxxxx.ParseDataException; /** * 文件解析器 * @author zhanghao */ public interface FileParser { public List parse(int functionNo , FileInputStream inputStream) throws ParseDataException; } /** * Excel文件解析器 * @author zhanghao */ public abstract class AbstractFileParser implements FileParser { /** * 默认构造函数 */ public AbstractFileParser(){ } protected ParserHelper parserHelper; /** * 实现FileParser接口方法 */ public List parse(int functionNo , FileInputStream inputStream) throws ParseDataException{ POIFSFileSystem fs = null; HSSFWorkbook wb = null; try{ fs = new POIFSFileSystem(inputStream); wb = new HSSFWorkbook(fs); }catch(IOException ioe){ ioe.printStackTrace(); throw new ParseDataException(ioe.getMessage()); }catch(RecordFormatException rfe){ rfe.printStackTrace(); throw new ParseDataException("不支持excel的高级功能,请禁用筛选等功能!"); } //取得 导入Excel文件的配置文件中的预设结果 SheetContent sc = parserHelper.getSheetContent(functionNo); //取得 预设文件中指定sheet页 HSSFSheet sheet = wb.getSheetAt(sc.getIndex()); ArrayList list = new ArrayList(); int rows = sheet.getPhysicalNumberOfRows();//取得所有行 if(log.isDebugEnabled()){ log.debug("\trows=" + rows); } try{ //rows 是从1开始 与java数组不同 for(int j = sc.getRowStart(); j < rows ; j++){ if( null == sheet.getRow(j).getCell( (short) 0 ) ){ break ; } String index = null; if(HSSFCell.CELL_TYPE_NUMERIC == sheet.getRow(j).getCell( (short) 0 ).getCellType()){ index = String.valueOf(sheet.getRow(j).getCell( (short) 0 ).getNumericCellValue()); }else if(HSSFCell.CELL_TYPE_STRING == sheet.getRow(j).getCell( (short) 0 ).getCellType()){ index = sheet.getRow(j).getCell( (short) 0 ).getStringCellValue(); } if( null == index || "".equals(index)){ break; } /* * 根据传入的参数(结构、一个row), 构建对象 * 在使用可以添加参数来修改 */ XXXXXXentity view = getData(sc , sheet.getRow(j)); list.add(view); } }catch(Exception e){ throw new ParseDataException(e.getMessage()); } return list; } //解析返回对象 abstract protected XXXXXXentity getData(SheetContent sheet , HSSFRow row); }
import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; /** * 构造器实现 */ public class ExcelParser extends AbstractFileParser { /** * 默认构造函数 */ public ExcelParser(){ } protected BillViewPay getData(SheetContent sheet , HSSFRow row){ String fieldName = null; ImportBillData view = new ImportBillData(); //组装对象 BeanWrapper wrapper = new BeanWrapperImpl(view); for(short i = (short)sheet.getColStart() ; i < sheet.getColumn().length + sheet.getColStart(); i++){ HSSFCell cell = row.getCell(i); fieldName = sheet.getColumn()[i - sheet.getColStart()]; if("disabled".equals(fieldName)){ continue; } String value = null; if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC : value = format(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_STRING : value = cell.getStringCellValue(); if(null != value){ value = value.toString().trim(); } break; default : } if(null != value){ //给对象指定属性名附值 wrapper.setPropertyValue(fieldName , value); } } if(log.isDebugEnabled()) log.debug("excel data : " + i + " >> " + fieldName + " = " + value); } return view; } }
2、配置文件(模板文件)
<?xml version = "1.0" encoding = "GB2312"?> <exg name="bms" version="300" file-type="excel"> <function no="1"> <!--土地信息--> <sheet index="0" row-start="1" column-start="1"> <column offset="1">billTypeByName</column> <column offset="2">billStyleByName</column> <column offset="3">payName</column> <column offset="4">payNo</column> <column offset="5">payBank</column> <column offset="6">recName</column> <column offset="7">recNo</column> <column offset="8">recBankNo</column> <column offset="9">recBank</column> <column offset="10">accptrName</column> <column offset="11">accptrNo</column> <column offset="12">accptrBank</column> <column offset="13">accptrBankNo</column> <column offset="14">accptrBankAdr</column> <column offset="15">startDay</column> <column offset="16">endDay</column> <column offset="17">amount</column> <column offset="18">payFactor.deposetAmount</column> </sheet> </function> <function no="2"> <!--租借信息--> <sheet index="0" row-start="1" column-start="1"> <column offset="1">billTypeByName</column> <column offset="2">billStyleByName</column> <column offset="3">payName</column> <column offset="4">payNo</column> <column offset="5">payBank</column> <column offset="6">recName</column> <column offset="7">recNo</column> <column offset="8">recBankNo</column> <column offset="9">recBank</column> <column offset="10">accptrName</column> <column offset="11">accptrNo</column> <column offset="12">accptrBank</column> <column offset="13">accptrBankNo</column> <column offset="14">accptrBankAdr</column> <column offset="15">startDay</column> <column offset="16">endDay</column> <column offset="17">amount</column> <column offset="18">payFactor.deposetAmount</column> </sheet> </function> </exg>
3、spring配置,指定加载时调用初始化方法
* <bean name="parserHelper" class="com.xxx.xxx.ParserHelper" init-method="initConfig"> * <property name="fileName"><value>exg-file-config.xml</value></property> * </bean>
相关推荐
综上所述,"公用Excel导入.zip"提供了使用Java处理Excel数据的实例,包括代码、步骤和文档,是学习和开发相关功能的好资源。通过理解这些知识点,你可以更好地实现Excel数据的自动化处理和导入,提升工作效率。
本人工作中自己写的一个excel工具类,可以单独打包成jar,作为公共模块使用。 使用它可以直接不用关心poi的api。导入导出,轻轻松松。 使用方法请关注一下,cn.com.flaginfo.biz.excel.test 包下面的Test类。
这是一个EXCEL导入、导出的公共模块,属于通用型,详细用法如下: 1.将此模块下载后解压,解压后的文件放在源代码的文件夹内 2.在需要引用的单元文件USES这个文件名,即PubUnit 3.引用后就可以直接调用了 导出:...
Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类
总结起来,Java导入导出通用模板是利用自定义注解提供元数据,通过反射实现动态操作,结合Java POI库处理Excel文件,以实现数据的灵活导入和导出。这种模板化的设计模式在Java开发中具有广泛的应用价值,尤其是在...
在IT行业中,Delphi是一种...这个过程需要对Delphi编程、数据库操作以及Excel文件格式有一定了解,但通过以上介绍的工具和方法,可以大大简化这个过程,提高开发效率。在实际项目中,可以根据需求选择最适合的方案。
这个库允许开发者在ABAP程序中直接生成XLSX格式的Excel文档,而无需借助外部工具或服务器端的Microsoft Office实例。通过ABAP2XLSX,你可以创建复杂的表格、设置单元格样式、添加公式、图表以及处理数据。这极大地...
标题提到的"封装java常用工具的类"是一个很好的实践,将常见的功能模块化,方便复用和维护。下面我们将详细探讨这个主题中的多个知识点。 1. **邮件发送**:JavaMail API提供了发送电子邮件的能力。通过javax.mail...
java公用类,sql基础类等,为使用者提供便利,更好的开发程序
poi通过反射,泛型,注解来实现通用的poi导出导入公共类。
Hutool工具包是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自于每个用户的精雕细琢,...
Apache POI不仅仅是一个库,它也是一个强大的工具,可以帮助开发者自动化处理Excel数据,例如在大数据分析、报告生成或数据导入导出场景中。 在提供的文件名列表中,“AExcuteExcel.java”很可能是实现上述公用方法...
在Vue.js开发中,有时我们需要将用户...总的来说,Vue实现导出Excel的公用组件vendor是一个实用的功能,它通过Blob.js和Export2Excel.js这样的工具,使得在前端轻松导出数据成为可能,提高了开发效率,增强了用户体验。
excel表格导出工具类,就是这么个东西不用多做描述了,可以调用
`Util`是"Utility"的缩写,通常用于表示工具类或实用程序,这里指的可能是手机号归属地查询的公用函数。这些函数可能包括解析手机号码、查询归属地数据库、返回结果对象等功能。 在压缩包中,"手机号码归属地"可能...
该项目是一款基于Java和Shell语言开发的Java公用模块设计源码,包含303个文件,涵盖253个Java源文件、17个XML配置文件、10个PNG图片文件、4个Markdown文档、4个属性文件、3个Shell脚本文件、3个Gradle构建文件、2个...
压缩包内有三款不同的EXCEL文件修复工具,分别是:Excel Repair 1.4.0.1汉化绿色版是一个非常实用的EXCEL文件修复工具,通过它能够修复受损的EXCEL文件;可以恢复空的单元格、恢复数组公式、恢复公用公式,支持...
common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 ...
这个"springboot 抽取的一个公用的excel帮助工程"是专为处理Excel文件而设计的,提供了便捷的导入和导出功能,使得在SpringBoot应用中处理Excel数据变得更加简单。 首先,我们需要理解SpringBoot的特性。SpringBoot...
IK Analyzer 是一个开源的,基于 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析...