- 浏览: 218850 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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工具类,可以单独打包成jar,作为公共模块使用。 使用它可以直接不用关心poi的api。导入导出,轻轻松松。 使用方法请关注一下,cn.com.flaginfo.biz.excel.test 包下面的Test类。
公用的excel导入功能,内有文档说明,代码,步骤。是个值得你下载的好东西哦
这是一个EXCEL导入、导出的公共模块,属于通用型,详细用法如下: 1.将此模块下载后解压,解压后的文件放在源代码的文件夹内 2.在需要引用的单元文件USES这个文件名,即PubUnit 3.引用后就可以直接调用了 导出:...
Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类
excel 注解方式导入导出(包含基础类公用方法)还包含Date工具类,String 工具类 HttpCline工具类
delphi实现excel和SQLserver数据的导入导出 可以做参考
java公用类,sql基础类等,为使用者提供便利,更好的开发程序
poi通过反射,泛型,注解来实现通用的poi导出导入公共类。
ABAP2XLSX+封装EXCEL 打印的公用类
自定义的一个比较灵活的导入excel的公用类
压缩包内有三款不同的EXCEL文件修复工具,分别是:Excel Repair 1.4.0.1汉化绿色版是一个非常实用的EXCEL文件修复工具,通过它能够修复受损的EXCEL文件;可以恢复空的单元格、恢复数组公式、恢复公用公式,支持...
excel表格导出工具类,就是这么个东西不用多做描述了,可以调用
common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 ...
封装java常用的类,其中有邮件发送实现带jsp,xml,导出excel,加密,时间类,数据库连接池,验证码,gui,io,SQLserver,StringUtil等等等
vue项目前端导出数据到Excel,引用的公用组件
jfinal excel公用工具类 ,简单几行代码即可导出excel 支持复合表头,复杂表头
拥有Microsoft Office 2010 的同事们会发现,Excel无法将几个窗口并排放置,几个Excel文件是共享一个窗口的。
归纳了一些很实用的工具类,几乎JAVA开发中都会用到的相关数据类型的转换,时间类型的转换,等等
附近是两个文件 一个 导出导入的公用部分,另一个是导出的调用实例,但是没有导入的实例,根据实际需求在原来基础修改即可,使用的是poi的jar。支持导出所有的版本的office 和wps的excel表 欢迎初级参考。牛人忽略,...
json读取 java日期转换 字符串转换 各种类型互相转换 集合排序 日期处理等,别看分多,里边包含13中java常用的公用类,绝对物超所值。