Java POI 导入Excel
来源:互联网 发布:php 判断是否刷新页面 编辑:程序博客网 时间:2024/06/05 05:15
今天说下Java Web中常见的Excel的导入,一种是POI,一种是jxl。我们来用POI操作一下,写一个Java 导入Excel的实例。前提是导入POI的相关jar包。
我们呢定义一个常见的Java bean,包括一些属性和get/set方法。
package org.topcheer.biz.sys.model;public class BcapBmsSignIMP {private String actiontype;private String actiondesc;private String strdecode;private String branchcode;private String clientcode;private String clientname;private String contractdate;private String contract;private String contractamount;private String maturity;private String lincame;private String lincamethod;private String aginraup;private String aginralo;private String aginraloinpay;private String remark;private String businessid;private String orgcode;public String getStrdecode() {return strdecode;}public void setStrdecode(String strdecode) {this.strdecode = strdecode;}public String getActiontype() {return actiontype;}public void setActiontype(String actiontype) {this.actiontype = actiontype;}public String getActiondesc() {return actiondesc;}public void setActiondesc(String actiondesc) {this.actiondesc = actiondesc;}public String getBranchcode() {return branchcode;}public void setBranchcode(String branchcode) {this.branchcode = branchcode;}public String getClientcode() {return clientcode;}public void setClientcode(String clientcode) {this.clientcode = clientcode;}public String getClientname() {return clientname;}public void setClientname(String clientname) {this.clientname = clientname;}public String getContractdate() {return contractdate;}public void setContractdate(String contractdate) {this.contractdate = contractdate;}public String getContract() {return contract;}public void setContract(String contract) {this.contract = contract;}public String getContractamount() {return contractamount;}public void setContractamount(String contractamount) {this.contractamount = contractamount;}public String getMaturity() {return maturity;}public void setMaturity(String maturity) {this.maturity = maturity;}public String getLincame() {return lincame;}public void setLincame(String lincame) {this.lincame = lincame;}public String getLincamethod() {return lincamethod;}public void setLincamethod(String lincamethod) {this.lincamethod = lincamethod;}public String getAginraup() {return aginraup;}public void setAginraup(String aginraup) {this.aginraup = aginraup;}public String getAginralo() {return aginralo;}public void setAginralo(String aginralo) {this.aginralo = aginralo;}public String getAginraloinpay() {return aginraloinpay;}public void setAginraloinpay(String aginraloinpay) {this.aginraloinpay = aginraloinpay;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public String getBusinessid() {return businessid;}public void setBusinessid(String businessid) {this.businessid = businessid;}public String getOrgcode() {return orgcode;}public void setOrgcode(String orgcode) {this.orgcode = orgcode;}}
这个是要导入的数据类型,Excel中的一行对应一个BcapBmsSignIMP对象。
下面在我们实际Action需要的地方调用这个方法:ImportDataFromExcel即可。参数:vo:就是一个BcapBmsSignIMP对象的实例
is是页面传过来的Excel转化的输入流,后面的excelFilename是excel的名称。
/** * 判断excel文件后缀名,生成不同的Workbook * @param is * @param excelFileName * @return * @throws IOException */public Workbook createWorkBook(InputStream is,String excelFileName) throws IOException {if(excelFileName.endsWith(".xls")){return new HSSFWorkbook(is);}else if(excelFileName.endsWith(".xlsx")){ return new XSSFWorkbook(is); }return null;}/** * 根据sheet索引号获取对应的sheet * * @param workBook * @param sheetIndex * @return */public Sheet getSheet(Workbook workBook,int sheetIndex){return workBook.getSheetAt(0);}/** * 将sheet中的数据保存到list中, * 1、使用此方法时 vo的属性个数必须和excel文件每行数据的列数相同且一一对应,vo属性的所有类型都为String * 2、在action调用此方法是 需声明 * private File excelFile;上传的文件 * private String excelFileFileName;保存原始的文件名 * 两个属性 * 3、页面的file控件 name需对应File的名称 * @param vo javaBean * @param is 输入流 * @param excelFileName 要导入的excel名称 */public List<Object> importDataFromExcel(Object vo,InputStream is,String excelFileName){ List<Object> list = new ArrayList<Object>(); try{//1、创建工作簿Workbook workBook = this.createWorkBook(is, excelFileName); //2、创建工作表sheetSheet sheet = this.getSheet(workBook, 0); //3、获取sheet中数据行数int rows = sheet.getPhysicalNumberOfRows(); int cells = sheet.getRow(0).getPhysicalNumberOfCells();//获取表头的单元格个数//利用反射得到该对象的所有属性Field[] fields = vo.getClass().getDeclaredFields();for(int i=1;i< rows ; i++){//第一行为标题行,从第二行开始取数据 Row row = sheet.getRow(i); int index =0; //利用反射,根据javabean属性的先后顺序,动态调用setXxx()方法给属性赋值 while(index < cells){ Cell cell = row.getCell(index); if(null == cell){ cell = row.createCell(index); } cell.setCellType(Cell.CELL_TYPE_STRING); String value = null == cell.getStringCellValue()?"":cell.getStringCellValue(); Field field = fields[index]; String fieldName = field.getName(); String methodName = "set"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1); Method setMethod = vo.getClass().getMethod(methodName,new Class[]{String.class} ); setMethod.invoke(vo, new Object[]{value}); index++; } if(isHasValues(vo)){//对象属性有值 list.add(vo); vo = vo.getClass().getConstructor(new Class[]{}).newInstance(new Object[]{});//重新创建一个vo对象 }} }catch(Exception e){ e.printStackTrace(); log.error(e); }finally{try {is.close();//关闭输入流} catch (IOException e) {log.error(e);} } return list;}
阅读全文
0 0
- java poi 导入excel
- Java poi+excel导入
- java poi导入EXCEL
- java poi 导入Excel
- Java POI导入Excel
- Java POI 导入Excel
- java poi 导入excel
- Java poi+excel导入
- java excel poi 导入导出
- JAVA导入导出EXCEL(POI)
- Java POI导入导出excel
- Java POI Excel的导入
- java poi实现excel导入
- java poi Excel文件导入
- Java POI 导入Excel以及解析Excel
- JAVA实现Excel导入/导出(POI)
- java poi 导入导出Excel xsl xslx
- 使用Java POI导入导出Excel数据
- Mac 下清理硬盘空间大小 很实用哦。
- Sublime Text 3 的java代码中有中文,用cmd中运行时出现中文乱码
- 一个多年安卓开发者的一些感悟与忠告
- 51nod 1515 明辨是非 && 2017百度之星初赛第一场第二题(并查集+启发式合并)
- vue项目中引入外部css以及js文件的方法
- Java POI 导入Excel
- 【算法】之直接插入排序
- Unity之GPS定位详解
- 查看或修改Git的用户名和邮箱
- 剑指Offer-数组全排列
- Div+Css布局--frameSet布局
- Hoxx vpn
- Python 类的定义和实例化,类继承
- android 手机无线调试