Userinfo.java
public class Userinfo { private Integer id; private String name; private String pass; private String lastname; private String addres; private String remark; //... }
ExcelWorkSheet.java
package com.excel; import java.util.ArrayList; import java.util.List; public class ExcelWorkSheet<T> { private String sheetName; private List<T> data = new ArrayList<T>(); //数据行 private List<String> columns; //列名 public String getSheetName() { return sheetName; } public void setSheetName(String sheetName) { this.sheetName = sheetName; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } public List<String> getColumns() { return columns; } public void setColumns(List<String> columns) { this.columns = columns; } }
UserAction.java
package com.excel; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ // private IUserBiz userBiz; // public void setUserBiz(IUserBiz userBiz) { // this.userBiz = userBiz; // } private File excelFile; //上传的文件 private String excelFileFileName; //保存原始文件名 //将Excel文件解析完毕后信息存放到这个对象中 private ExcelWorkSheet<Userinfo> excelWorkSheet; public File getExcelFile() { return excelFile; } public void setExcelFile(File excelFile) { this.excelFile = excelFile; } public String getExcelFileFileName() { return excelFileFileName; } public void setExcelFileFileName(String excelFileFileName) { this.excelFileFileName = excelFileFileName; } public ExcelWorkSheet<Userinfo> getExcelWorkSheet() { return excelWorkSheet; } public void setExcelWorkSheet(ExcelWorkSheet<Userinfo> excelWorkSheet) { this.excelWorkSheet = excelWorkSheet; } //判断文件类型 public Workbook createWorkBook(InputStream is) throws IOException{ if(excelFileFileName.toLowerCase().endsWith("xls")){ return new HSSFWorkbook(is); } if(excelFileFileName.toLowerCase().endsWith("xlsx")){ return new XSSFWorkbook(is); } return null; } public String execute() throws Exception{ Workbook book = createWorkBook(new FileInputStream(excelFile)); //book.getNumberOfSheets(); 判断Excel文件有多少个sheet Sheet sheet = book.getSheetAt(0); excelWorkSheet = new ExcelWorkSheet<Userinfo>(); //保存工作单名称 Row firstRow = sheet.getRow(0); Iterator<Cell> iterator = firstRow.iterator(); //保存列名 List<String> cellNames = new ArrayList<String>(); while (iterator.hasNext()) { cellNames.add(iterator.next().getStringCellValue()); } excelWorkSheet.setColumns(cellNames); for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row ros = sheet.getRow(i); Userinfo user = new Userinfo(); user.setId((int)ros.getCell(0).getNumericCellValue()); user.setName(ros.getCell(1).getStringCellValue()); user.setPass(ros.getCell(2).getStringCellValue()); user.setLastname(ros.getCell(3).getStringCellValue()); user.setAddres(ros.getCell(4).getStringCellValue()); user.setRemark(ros.getCell(5).getStringCellValue()); System.out.println(user); excelWorkSheet.getData().add(user); } for (int i = 0; i < excelWorkSheet.getData().size(); i++) { Userinfo info = excelWorkSheet.getData().get(i); System.out.println(info.getLastname()); } return SUCCESS; } }
OutAction.java
package com.excel; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; public class OutAction extends ActionSupport implements ServletResponseAware{ private static final long serialVersionUID = 1L; // private IUserBiz biz ; // public void setBiz(IUserBiz biz) { // this.biz = biz; // } private String format = "xls"; private HttpServletResponse response; private String fileName = "导出数据.xls"; public String execute(){ //@SuppressWarnings("all") //List la = biz.getAllSql(); setResponseHeader(); try { exportExcel(response.getOutputStream()); response.getOutputStream().flush(); response.getOutputStream().close(); } catch (IOException e) { e.printStackTrace(); } return null; } /** 设置响应头*/ public void setResponseHeader(){ try{ // response.setContentType("application/msexcel;charset=UTF-8"); //两种方法都可以 response.setContentType("application/octet-stream;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" +java.net.URLEncoder.encode(this.fileName, "UTF-8")); //客户端不缓存 response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); }catch(Exception ex){ ex.printStackTrace(); } } /**导出数据*/ private void exportExcel(OutputStream os) throws IOException{ Workbook book = new HSSFWorkbook(); Sheet sheet = book.createSheet("导出信息"); Row row = sheet.createRow(0); row.createCell(0).setCellValue("编号"); row.createCell(1).setCellValue("用户名"); row.createCell(2).setCellValue("密码"); row.createCell(3).setCellValue("真实姓名"); row.createCell(4).setCellValue("地址"); row.createCell(5).setCellValue("备注"); CellStyle sty = book.createCellStyle(); List<Userinfo> list = new ArrayList<Userinfo>();// biz.getAll(); list.add(new Userinfo(1, "umgsai1", "123", "s", "湖北", "1000")); list.add(new Userinfo(2, "umgsai2", "123", "s", "湖北", "1000")); list.add(new Userinfo(3, "umgsai3", "123", "s", "湖北", "1000")); list.add(new Userinfo(4, "umgsai4", "123", "s", "湖北", "1000j")); for (int i = 0; i < list.size(); i++) { Userinfo user = list.get(i); row = sheet.createRow(i + 1); Cell newCell = row.createCell(0); newCell.setCellType(Cell.CELL_TYPE_STRING); newCell.setCellValue(user.getId()); row.createCell(1).setCellValue(user.getName()); newCell = row.createCell(2); newCell.setCellType(Cell.CELL_TYPE_STRING); newCell.setCellValue(user.getPass()); row.createCell(3).setCellValue(user.getLastname()); row.createCell(4).setCellValue(user.getAddres()); newCell = row.createCell(5); newCell.setCellType(Cell.CELL_TYPE_STRING); newCell.setCellValue(user.getRemark()); } try{ book.write(os); }catch(Exception ex){ ex.printStackTrace(); }finally{ book.close(); } } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; this.fileName = "导出数据.xls"; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } /**记住一定有该属性的set方法*/ public void setServletResponse(HttpServletResponse response) { this.response = response; } }
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="userInfo" class="com.excel.UserAction"> <result>InputExcel.jsp</result> </action> <action name="outPut" class="com.excel.OutAction"> <result>InputExcel.jsp</result> </action> </package> </struts>
InputExcel.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1><s:property value="excelWorkSheet.sheetName" /> </h1> <p> <s:iterator value="excelWorkSheet.columns"> <s:property /> || </s:iterator> </p> <s:iterator var="user" value="excelWorkSheet.data"> <p> <s:property value="#user.id"/> <s:property value="#user.name"/> <s:property value="#user.pass"/> <s:property value="#user.lastname"/> <s:property value="#user.addres"/> <s:property value="#user.remark"/> </p> </s:iterator> </body> </html>
OutExcel.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <s:form action="userInfo" method="post" enctype="multipart/form-data"> 导入Excel文件:<s:file name="excelFile"></s:file> <br /> <s:submit value="导入"></s:submit> </s:form> </body> </html>
用到的jar包
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
log4j-1.2.17.jar
ognl-3.0.6.jar
poi-3.11-beta2-20140822.jar
poi-examples-3.11-beta2-20140822.jar
poi-excelant-3.11-beta2-20140822.jar
poi-ooxml-3.11-beta2-20140822.jar
poi-ooxml-schemas-3.11-beta2-20140822.jar
poi-scratchpad-3.11-beta2-20140822.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
相关推荐
首先,让我们深入理解一下如何使用Struts2和POI来实现Excel的导入导出。 1. **Struts2的Action配置**: 在Struts2中,你需要创建一个Action类来处理用户请求。这个Action类会有一个方法,专门处理导入或导出Excel...
在Struts2中,要实现Excel导入导出,我们需要以下组件: 1. **Apache POI库**:这是一个用于读写Microsoft Office格式文件的Java库,包括Excel。我们可以用它来创建、修改和读取Excel文件。 2. **Struts2 Action**...
下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 Apache POI是Apache软件基金会的一个项目,提供API用于读写Microsoft Office格式的文件,包括Excel。在Struts2中,我们通常使用POI库来...
运用struts2将数据库中的数据导入和导出,同时会用到poi的jar包
Java 实现 Excel 导入导出 ...在 Struts2+Spring 框架中实现 Excel 导入导出需要使用 POI 库来读取和写入 Excel 文件中的数据,并对数据进行处理。使用 POI 库可以简化 Excel 文件的操作,并提高程序的性能。
总结起来,"使用poi从数据库导出excel表的示例"是一个结合了Struts1 MVC框架和Apache POI库的Java编程任务,它涉及数据库连接、SQL查询、Excel文件生成以及Web应用响应。这个过程不仅有助于数据的高效管理和分享,也...
Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...
1.本动态导入导出Excel工程导入Eclipse即可用行,支持所有版本的Excel导入导出。 2.程序使用Struts2+POI+SQLSever(SSH即Struts2+Hibernate+Spring)实现Excel动态数据导入和导出,压缩包内含程序源码文件。
poi即Excel导入导出,在开发过程中了,为了提高数据录入速度, 一些系统都会使用导入功能,导入目前只能通过流的方式读写,那么为了此操作的便利性,提供此工具类,是原有的excel数据读取到泛型集合中,然后再对集合...
在Excel导入导出过程中,Apache POI库起到了核心作用。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)API,分别用于读写旧版的Excel 97-2003格式(.xls)和较新的Excel 2007及以上...
下面将详细解释如何使用 POI 实现 Excel 的导入导出功能。 首先,为了导出 Excel,我们需要创建一个 `HSSFWorkbook` 对象,这是 POI 中表示 Excel 工作簿的类。然后,我们可以创建一个或多个 `HSSFSheet` 对象来...
### Struts+Hibernate框架下的Excel文件导入导出 #### 一、引言 在软件开发过程中,Excel文件的导入导出是一项常见的需求。比如,在Web应用程序中,常常需要将原始数据从Excel文件导入到数据库中,或者将数据库中...
以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,实现数据的导入和导出功能,提高工作效率。在实际项目中,可以...
描述中提到的"poi导入导出excel文件,项目绝对可以运行,只要将项目导入myeclipse中直接在浏览器中输入http://localhost:8080/strutspoi即可运行",意味着这是一个基于Struts的Web应用程序,它已经集成了Apache POI...
【Excel导入导出】功能使得用户能够方便地通过Excel文件管理数据。管理员可以将现有的学生数据导入到系统中,或者将系统中的数据导出到Excel文件,便于数据分析、报告制作或者与其他系统交换数据。这个功能通常基于...
在IT行业中,Excel导入导出是一项常见的数据处理任务,特别是在Web应用中,用户往往需要将数据导入或导出到Excel格式以便于分析、共享或备份。在这个场景中,“excel导入导出bean和action”指的是使用Java编程语言...
为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache POI库创建一个能够处理`List<Object>`数据的Excel工具类。 Apache POI是一个流行...
本例子将详细介绍如何使用Apache POI库导出Excel文件。 首先,我们需要添加Apache POI库到我们的项目中。在给定的文件列表中,我们看到`poi-2.5.1.jar`,这是Apache POI的一个早期版本。现代项目通常会使用更新的...
在互联网开发中,数据的导入导出功能是常见的需求之一,尤其是对于企业级应用,能够方便用户将数据导出为Excel格式,便于分析和存储。Apache POI库是Java平台上的一个开源项目,专门用于读写Microsoft Office文件...