POI导入导出EXCEL文件_第1页
POI导入导出EXCEL文件_第2页
POI导入导出EXCEL文件_第3页
POI导入导出EXCEL文件_第4页
POI导入导出EXCEL文件_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、webweb 中使用 POIPOI 导入导出 EXCELEXCEL 文件的例子strutsl.x 的例子,struts2.x 可以参考自己修改l.action 的写法 importjava.io.*;importjava.sql.*;importjava.util.ArrayList;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.usermodel.*;importorg.apache.struts.action

2、.*;importorg.apache.struts.upload.FormFile;mons.beanutils.BeanUtils;publicclassAction/*/publicActionForwardgetDownload(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse)throwsExceptionFormfm=(Form)actionForm;/Excel 文件存放在服务器的相对路径下StringoutputFile=re

3、quest.getRealPath(/tmp/Excel.xls);try/创建新的 Excel 工作簿HSSFWorkbookworkbook=newHSSFWorkbook();/在 Excel 工作簿中建一工作表HSSFSheetsheet=workbook.createSheet(Sheet1);/设置单元格格式(文本)HSSFCellStylecellStyle=workbook.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat();/在索引 0 的位置创建行(第一行)HSSFRowro

4、w=sheet.createRow(short)0);*把数据库中的字段导入到*/Excel,并生成 Excel 文档HSSFCellcelll=row.createCell(short)0);/第一歹 UHSSFCellcell2=row.createCell(short)1);HSSFCellcell3=row.createCell(short)2);/定义单元格为字符串类型cell1.setCellType(HSSFCell.CELL_TYPE_STRING);cell2.setCellType(HSSFCell.CELL_TYPE_STRING);cell3.setCellType(H

5、SSFCell.CELL_TYPE_STRING);cell1.setEncoding(HSSFCell.ENCODING_UTF_16);cell2.setEncoding(HSSFCell.ENCODING_UTF_16);cell3.setEncoding(HSSFCell.ENCODING_UTF_16);/在单元格中输入数据cell1.setCellValue(姓名);cell2.setCellValue(性另 1J);cell3.setCellValue(年龄)Connectionconnection=session.connection();Stringsql=Selectt.n

6、ame,t.sex,t.agefromtabletwheret.sex=?;tryPreparedStatementps=connection.prepareStatement(sql);ps.setString(1,fm.getSex();/传入查询条件ResultSetrs=ps.executeQuery();/查询结果存入 mit();/执行 SQLwhile(rs.next()/设置 j 行从第二行开始intj=1;row=sheet.createRow(short)j);/设置 i 列从第二列开始for(inti=1;i=3;i+)HSSFCellcell=row.createCel

7、l(short)(i-1);/设置单元格格式cell.setCellStyle(cellStyle);cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(rs.getString(i);)j+;)request.setAttribute(message,文件生成成功!);catch(SQLExceptione)request.setAttribute(message,创建文件失败!);e.printStackTrace();/删除路径下同

8、名的 Excel 文件Filepath=newFile(outputFile);path.delete();/新建一输出文件流FileOutputStreamfOut=newFileOutputStream(outputFile);/把相应的 Excel 工作簿存盘workbook.write(fOut);/操作结束,关闭文件fOut.flush();fOut.close();/该处如果 Excel 过大会影响效率, 谁有好的想法可以提出来参考(不过从页面下载完后就会清空)request.getSession().setAttribute(Download,outputFile);catch(

9、Exceptionioexception)request.setAttribute(message,创建文件失败!);returnactionMapping.findForward(outJSP);returnactionMapping.findForward(outJSP);*/publicActionForwardgetUpload(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse)throwsException/获取 excel 文件F

10、ormfm=(Form)actionForm;FormFileformfile=fm.getUploadfile();InputStreaminputstream=formfile.getInputStream();fm.clear();/清空Sessionsession=HibernateSession.currentSession();ArrayListlist=newArrayList();intinput=0;/导入记数Stringname=null;Stringsex=null;Stringage=null;/* ,*从 Excel 文件中读取数据,并导入到数据库中try(通过得到的

11、文件输入流 inputstream 创建一个 HSSFWordbook 对象HSSFWorkbookhssfworkbook=newHSSFWorkbook(inputstream);HSSFSheethssfsheet=hssfWorkbook.getSheetAt(0);/第一个工作表HSSFRowhssfrow=hssfsheet.getRow(0);/第一行遍历该表格中所有的工作表,i 表示工作表的数量 getNumberOfSheets 表示工作表的总数for(inti=0;ihssfworkbook.getNumberOfSheets();i+)hssfsheet=hssfwork

12、book.getSheetAt(i);遍历该行所有的行,j 表示彳亍数 getPhysicalNumberOfRows 行的总数for(intj=1;jhssfsheet.getPhysicalNumberOfRows();j+)hssfrow=hssfsheet.getRow(j);判断是否还存在需要导入的数据 if(hssfrow=null)System.out.println( 这 里 已 没 有 数 据 , 在 第 +i+ 列 , 第 +j+ 彳f);break;/*/*将 EXCEL 中的第 j 行,第一列的值才 1 入到实例中*/if(hssfrow.getCell(short)0

13、)=null)name=;elseif(hssfrow.getCell(short)0).getCellType()=0)name=newDouble(hssfrow.getCell(short)0).getNumericCellValue().toString();/如果 EXCEL 表格中的数据类型为字符串型 elsename=hssfrow.getCell(short)0).getStringCellValue().trim();/*/*将 EXCEL 中的第 j 行,第二列的值才 1 入到实例中*/姓名if(hssfrow.getCell(short)1)=null)sex=;else

14、if(hssfrow.getCell(short)1).getCellType()=0)sex=newDouble(hssfrow.getCell(short)1).getNumericCellValue().toString();/如果 EXCEL 表格中的数据类型为字符串型 elsesex=hssfrow.getCell(short)1).getStringCellValue().trim();/*/*将 EXCEL 中的第 j 行,第三列的值才 1 入到实例中*/姓名if(hssfrow.getCell(short)1)=null)age=;elseif(hssfrow.getCell(

15、short)1).getCellType()=0)age1).getNumericCellValue().toString();如果 EXCEL 表格中的数据类型为字符串型elseage=hssfrow.getCell(short)1).getStringCellValue().trim();name=name.trim();sex=sex.toUpperCase();if(name.equals()error.setName(name);error.setMessage(姓名不能为空);list.add(error);continue;elsefm.setName(name);fm.setS

16、ex(sex);fm.setAge(age);session.save(fm);导入成功加 1input+;session.saveObjs(list.toArray();catch()2.Form 的写法 importorg.apache.struts.action.ActionForm;importorg.apache.struts.upload.FormFile;publicclassFormextendsActionForm/上传的文件privateFormFile_flddo;publicvoidsetUploadfile(FormFileformfile)_flddo=formfile;newDouble(hssfrow.getCell(short)publicFormFilegetUploadfile()return_flddo;publicvoidclea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论