2022年Excel导入,将数据导入到数据库 .pdf
Java 实现上传 Excel文件,并读取数据插入到数据库中1、第一步当然是搭环境了,新建一个Web 项目,然后将需要的 jar 包加入,在这里只列出导入Excel 文件数据所需的jar包,其中包括:poi-3.0-rc4-20070503.jar、poi-contrib-3.0-rc4-20070503.jar、poi-scratchpad-3.0-rc4-20070503.jar,需要的包就这3 个了2、然后就是写代码了,当然是先前台然后写后台代码3、前台页面代码: 4、后台代码:/必须要说的是,导入Excel 文件数据到数据库,Excel 文件的格式必须都是文本格式的,如果不是文本格式的话,导入的时候读取文件时会出错, 切记切记(ps:具体的可以不可以是其他的格式,这我就不是太清楚了,我反正试了,不行,如果有高手还可以有其他的办法,请给小弟分享一下,谢谢QQ:495537636)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - public String Upload() throws Exception /这里需要强调一下,Excel文件有不止一个sheet页,所以这里根据你自己的具体情况而定,如果只有一个,只要是sheet0就行了,只要记住开始是从sheet0,然后往后排就行了,以下例子是 3个sheet页try / String path = ServletActionContext.getServletContext().getRealPath(/);/ System.out.println(path=+path);/ String path1 = request.getContextPath();/ System.out.println(path1+path1);/ String realpath = path+upload;/ System.out.println(realpath=+realpath);/ String propDir = PropertyUtil.getProperty(project.upload.dir);File file=this.getFile(); / System.out.println(=+realpath+this.getFileFileName();/ FileOutputStream fos=new FileOutputStream(realpath+this.getFileFileName();/ FileInputStream fis=new FileInputStream(file);/ byte buffer=new byte1024;/ int len=0;/ while(len=fis.read(buffer)0)/ fos.write(buffer,0,len);/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - / this.context.put(message, 上传成功! );/ Anv06 anv06 = null;/ Anv07 anv07 = null;/ Anv08 anv08 = null;/ String readpath = realpath+this.getFileFileName();POIFSFileSystem ps = new POIFSFileSystem(newFileInputStream(file); HSSFWorkbook workBook = new HSSFWorkbook(ps); HSSFRow row = null; int rowNum = 0; /这里是第一个sheet页HSSFSheet sheet0 = workBook.getSheetAt(0);/ 获得 SHEET0 (索引)for (rowNum = 2; rowNum = sheet0.getLastRowNum(); rowNum+) String ywhj1 = ; String ywhj2 = ; String ywhj3 = ; String ywhj4 = ; row = sheet0.getRow(short) rowNum); if (row != null) / 获取当前行的 colNum位置的单元格/这里是你的 Excel文件中有多少列你就写多少了,也是从0开始的HSSFCell cell0 = row.getCell(short) 0); HSSFCell cell1 = row.getCell(short) 1); HSSFCell cell2 = row.getCell(short) 2); HSSFCell cell3 = row.getCell(short) 3); HSSFCell cell4 = row.getCell(short) 4); HSSFCell cell5 = row.getCell(short) 5); HSSFCell cell6 = row.getCell(short) 6); HSSFCell cell7 = row.getCell(short) 7); HSSFCell cell8 = row.getCell(short) 8); HSSFCell cell9 = row.getCell(short) 9); HSSFCell cell10 = row.getCell(short) 10); HSSFCell cell11 = row.getCell(short) 11); HSSFCell cell12 = row.getCell(short) 12); HSSFCell cell13 = row.getCell(short) 13); HSSFCell cell14 = row.getCell(short) 14); HSSFCell cell15 = row.getCell(short) 15); HSSFCell cell16 = row.getCell(short) 16); HSSFCell cell17 = row.getCell(short) 17); HSSFCell cell18 = row.getCell(short) 18); HSSFCell cell19 = row.getCell(short) 19); HSSFCell cell20 = row.getCell(short) 20); HSSFCell cell21 = row.getCell(short) 21); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - HSSFCell cell22 = row.getCell(short) 22); HSSFCell cell23 = row.getCell(short) 23); HSSFCell cell24 = row.getCell(short) 24); anv06 = new Anv06(); if (cell0 != null) / 案件号 CNV601 第1列String str = swith(cell0.getCellType(), cell0).trim(); anv06 .setCnv601(str); if(cell1 != null) /案件题名 CNV104 第2列String str = swith(cell1.getCellType(), cell1).trim(); anv06 .setCnv104(str); if(cell2 != null) /案件类型 CNV102 第3列String str = swith(cell2.getCellType(), cell2).trim(); anv06 .setCnv102(str); if(cell3 != null) /业务环节 1CNV103 第4列ywhj1 = swith(cell3.getCellType(), cell3).trim(); anv06 .setYwhj1(ywhj1); else ywhj1 = ; if(cell4 != null) /业务环节 2 第5列ywhj2 = swith(cell4.getCellType(), cell4).trim(); anv06 .setYwhj2(ywhj2); else ywhj2 = ; if(cell5 != null) /业务环节 3 第6列ywhj3 = swith(cell5.getCellType(), cell5).trim(); anv06 .setYwhj3(ywhj3); else ywhj3 = ; if(cell6 != null) /业务环节 4 第7列ywhj4 = swith(cell6.getCellType(), cell6).trim(); anv06 .setYwhj4(ywhj4); else ywhj3 = ; if(cell7 != null) /业务代码类型CNV105 第8列名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - String str = swith(cell7.getCellType(), cell7).trim(); anv06 .setCnv105(str); if(cell8 != null) /业务代码CNV106 第9列String str = swith(cell8.getCellType(), cell8).trim(); anv06 .setCnv106(str); if(cell9 != null) /保管期限CNV114 第10 列String str = swith(cell9.getCellType(), cell9).trim(); anv06 .setCnv114(str); if(cell10 != null) /页数 CNV107 第11 列String str = swith(cell10.getCellType(), cell10).trim(); anv06 .setCnv107(str); if(cell11 != null) /建档日期 CNV110 第12 列String str = swith(cell11.getCellType(), cell11).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv06 .setCnv110(date); if(cell12 != null) /建档人 CNV109 第13 列String str = swith(cell12.getCellType(), cell12).trim(); anv06 .setCnv109(str); if(cell13 != null) /案卷号 CNV602 第14 列String str = swith(cell13.getCellType(), cell13).trim(); anv06 .setCnv602(str); if(cell14 != null) /备注 CNV108 第15 列String str = swith(cell14.getCellType(), cell14).trim(); anv06 .setCnv108(str); if(cell15 != null) /组织机构代码CNV122 第16 列名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - String str = swith(cell15.getCellType(), cell15).trim(); anv06 .setCnv122(str); if(cell16 != null) /单位名称 CNV117 第17 列String str = swith(cell17.getCellType(), cell17).trim(); anv06 .setCnv117(str); if(cell17 != null) /单位简称 CNV118 第18 列String str = swith(cell17.getCellType(), cell17).trim(); anv06 .setCnv118(str); if(cell18 != null) /社会保险登记证号CNV120 第19 列String str = swith(cell18.getCellType(), cell18).trim(); anv06 .setCnv120(str); if(cell19 != null) /参保人员姓名CNV121 第20 列String str = swith(cell19.getCellType(), cell19).trim(); anv06 .setCnv121(str); if(cell20 != null) /身份证号码 CNV123 第21 列String str = swith(cell20.getCellType(), cell20).trim(); anv06 .setCnv123(str); if(cell21 != null) /业务经办人 CNV124 第22 列String str = swith(cell21.getCellType(), cell21).trim(); anv06 .setCnv124(str); if(cell22 != null) /业务经办日期CNV125 第23 列String str = swith(cell22.getCellType(), cell22).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv06 .setCnv125(date); if(cell23 != null) /模块名称 CNV129 第24 列String str = swith(cell23.getCellType(), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - cell23).trim(); anv06 .setCnv129(str); if(cell24 != null) /所属部门 CNV119 第25 列String str = swith(cell24.getCellType(), cell24).trim(); anv06 .setCnv119(str); if(!ywhj4.equals( ) anv06 .setCnv103(ywhj4); elseif(ywhj4.equals( )&!ywhj3.equals( ) anv06 .setCnv103(ywhj3); elseif(ywhj4.equals( )&ywhj3.equals( )&!ywhj2.equals( ) anv06 .setCnv103(ywhj2); elseif(ywhj4.equals( )&ywhj3.equals( )&ywhj2.equals( )&!ywhj1.equals( ) anv06 .setCnv103(ywhj1); Ans02 ans02 = (Ans02)this. session.get(user); String aa = ans02.getCns101(); anv06 .setCns101(aa); this.setCommonPropertiesForAdd(anv06 ); /上面是经过 for循环将 Excel文件中的值取到然后将这些值调用方法插入到数据库中jianManage.Excel_jian(Exceljian, anv06 ); HSSFSheet sheet1 = workBook.getSheetAt(1);/ 获得 SHEET1 (索引)for (rowNum = 1; rowNum = sheet1.getLastRowNum(); rowNum+) row = sheet1.getRow(short) rowNum); if (row != null) / 获取当前行的 colNum位置的单元格HSSFCell cell0 = row.getCell(short) 0); HSSFCell cell1 = row.getCell(short) 1); HSSFCell cell2 = row.getCell(short) 2); HSSFCell cell3 = row.getCell(short) 3); HSSFCell cell4 = row.getCell(short) 4); HSSFCell cell5 = row.getCell(short) 5); HSSFCell cell6 = row.getCell(short) 6); HSSFCell cell7 = row.getCell(short) 7); HSSFCell cell8 = row.getCell(short) 8); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - anv07 = new Anv07(); if (cell0 != null) / 案卷号 CNV213 第1列String str = swith(cell0.getCellType(), cell0).trim(); anv07 .setCnv213(str); if(cell1 != null) /案卷题名 CNV204 第2列String str = swith(cell1.getCellType(), cell1).trim(); anv07 .setCnv204(str); if(cell2 != null) /档案类型 CNV217 第3列String str = swith(cell2.getCellType(), cell2).trim(); anv07 .setCnv217(str); if(cell3 != null) /建档日期起 CNV205 第4列String str = swith(cell3.getCellType(), cell3).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv07 .setCnv205(date); if(cell4 != null) /建档日期止 CNV206 第5列String str = swith(cell4.getCellType(), cell4).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv07 .setCnv206(date); if(cell5 != null) /保管期限 CNV207 第6列String str = swith(cell5.getCellType(), cell5).trim(); anv07 .setCnv207(str); if(cell6 != null) /组卷人 CNV214 第7列String str = swith(cell6.getCellType(), cell6).trim(); anv07 .setCnv214(str); if(cell7 != null) /组卷日期 CNV215 第8列String str = swith(cell7.getCellType(), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - cell7).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv07 .setCnv215(date); if(cell8 != null) /盒号 CNV702 第9列String str = swith(cell8.getCellType(), cell8).trim(); anv07 .setCnv702(str); Ans02 ans02 = (Ans02)this. session.get(user); String aa = ans02.getCns101(); anv07 .setCns101(aa); anv07 .setCnv701(Util.generateID(); this.setCommonPropertiesForAdd(anv07 ); jianManage.Excel_juan(Exceljuan, anv07 ); HSSFSheet sheet2 = workBook.getSheetAt(2);/ 获得 SHEET2 (索引)for (rowNum = 1; rowNum = sheet2.getLastRowNum(); rowNum+) row = sheet2.getRow(short) rowNum); if (row != null) / 获取当前行的 colNum位置的单元格HSSFCell cell0 = row.getCell(short) 0); HSSFCell cell1 = row.getCell(short) 1); HSSFCell cell2 = row.getCell(short) 2); HSSFCell cell3 = row.getCell(short) 3); HSSFCell cell4 = row.getCell(short) 4); HSSFCell cell5 = row.getCell(short) 5); HSSFCell cell6 = row.getCell(short) 6); HSSFCell cell7 = row.getCell(short) 7); HSSFCell cell8 = row.getCell(short) 8); HSSFCell cell9 = row.getCell(short) 9); HSSFCell cell10 = row.getCell(short) 10); HSSFCell cell11 = row.getCell(short) 11); anv08 = new Anv08(); if (cell0 != null) /盒号 CNV220 第1列String str = swith(cell0.getCellType(), cell0).trim(); anv08 .setCnv220(str); if(cell1 != null) /盒题名 CNV221 第2列名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - String str = swith(cell1.getCellType(), cell1).trim(); anv08 .setCnv221(str); if(cell2 != null) /密级 CNV222 第3列String str = swith(cell2.getCellType(), cell2).trim(); anv08 .setCnv222(str); if(cell3 != null) /组盒人 CNV231 第4列String str = swith(cell3.getCellType(), cell3).trim(); anv08 .setCnv231(str); if(cell4 != null) /组盒日期 CNV232 第5列String str = swith(cell4.getCellType(), cell4).trim(); SimpleDateFormat formatter = newSimpleDateFormat(yyyy-mm-dd); Date date = formatter.parse(str); anv08 .setCnv232(date); if(cell5 != null) /区县 CNV223 第6列String str = swith(cell5.getCellType(), cell5).trim(); anv08 .setCnv223(str); if(cell6 != null) /街道 CNV224 第7列String str = swith(cell6.getCellType(), cell6).trim(); anv08 .setCnv224(str); if(cell7 != null) /楼名 CNV225 第8列String str = swith(cell7.getCellType(), cell7).trim(); anv08 .setCnv225(str); if(cell8 != null) /楼层 CNV226 第9列String str = swith(cell8.getCellType(), cell8).trim(); anv08 .setCnv226(str); if(cell9 != null) /房间号 CNV227 第10 列String str = swith(cell9.getCellType(), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - cell9).trim(); anv08 .setCnv227(str); if(cell10 != null) /柜编号 CNV228 第11 列String str = swith(cell10.getCellType(), cell10).trim(); anv08 .setCnv228(str); if(cell11 != null) /柜区域编号 CNV229 第12 列String str = swith(cell11.getCellType(), cell11).trim(); anv08 .setCnv229(str); Ans02 ans02 = (Ans02)this. session.get(user); String aa = ans02.getCns101(); anv08 .setCns101(aa); anv08 .setCnv801(Util.generateID(); this.setCommonPropertiesForAdd(anv08 ); jianManage.Excel_he(Excelhe, anv08 ); catch (Exception e) e.printStackTrace(); List dalx = this.getDmmxByCns303(CodeStatic.LB_DALX , true); List level4 = this.getDmmxByCns305(CodeStatic.JB_LEVEL4, true); List level5 = this.getDmmxByCns305(CodeStatic.JB_LEVEL5, true); List level6 = this.getDmmxByCns305(CodeStatic.JB_LEVEL6, true); List level7 = this.getDmmxByCns305(CodeStatic.JB_LEVEL7, true); List ywdmlx = this.getDmmxByCns303(CodeStatic.LB_YWDMLX, true); List ajzt = this.getDmmxByCns303(CodeStatic.LB_AJZT , true); List ssbm = this.getDmmxByCns303(CodeStatic.LB_SSBM , true); List bgqx = this.getDmmxByCns303(CodeStatic.LB_BGQX, true); List mj = this.getDmmxByCns303(CodeStatic.LB_MJ , true); Ans02 ans02 = (Ans02) this. session.get(user); String cns101 = ans02.getCns101(); this. context.put(code, cns101); String qx = Code.getQx (cns101.substring(3, 6); this. context.put(qx, qx); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - this. context.put(dalx, dalx); this. context.put(level4, level4); this. context.put(level5, level5); this. context.put(level6, level6); this. context.put(level7, level7); this. context.put(ywdmlx, ywdmlx); this. context.put(ajzt, ajzt); this. context.put(ssbm, ssbm); this. context.put(bgqx, bgqx); this. context.put(mj, mj); this. context.put(message, 文件读取成功! ); returnSUCCESS; 5、manage 中的方法也贴一下吧publicvoidExcel_jian(String id,Anv06 anv06); 6、manage 的实现类publicvoidExcel_jian(String id, Anv06 anv06) jianDao.Excel_jian(id, anv06); 7、dao 的方法publicvoid Excel_jian(String id,Object o); 8、dao 的实现类publicvoid Excel_jian(String id,Object o) sqlMap.insert(id,o); 9、Struts的配置文件/vstsoft/system/login.jsp/vstsoft/jian/excelImport.jsp名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - /配置文件上传大小,最大上传10M 10 、我用的是SSI (Spring+Struts+Ibatis)框架,如果有用其他的只要修改一下就行了,那个 Spring配置文件就不贴出来了,我想大家也都回怎么配置的,你懂得!11 、好了,综合上面的,读取Excel文件,并将数据写到数据中的实现就完成了,希望对你有帮助!谢谢名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -