`
umgsai
  • 浏览: 109574 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Struts POI 对Excel的导入导出

 
阅读更多

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源码示例

    首先,让我们深入理解一下如何使用Struts2和POI来实现Excel的导入导出。 1. **Struts2的Action配置**: 在Struts2中,你需要创建一个Action类来处理用户请求。这个Action类会有一个方法,专门处理导入或导出Excel...

    Struts2 Excel导入导出数据

    在Struts2中,要实现Excel导入导出,我们需要以下组件: 1. **Apache POI库**:这是一个用于读写Microsoft Office格式文件的Java库,包括Excel。我们可以用它来创建、修改和读取Excel文件。 2. **Struts2 Action**...

    struts2Ecxel导入导出

    下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 Apache POI是Apache软件基金会的一个项目,提供API用于读写Microsoft Office格式的文件,包括Excel。在Struts2中,我们通常使用POI库来...

    Struts2数据库数据导入导出

    运用struts2将数据库中的数据导入和导出,同时会用到poi的jar包

    java实现Excel导入导出

    Java 实现 Excel 导入导出 ...在 Struts2+Spring 框架中实现 Excel 导入导出需要使用 POI 库来读取和写入 Excel 文件中的数据,并对数据进行处理。使用 POI 库可以简化 Excel 文件的操作,并提高程序的性能。

    使用poi从数据库导出excel表的示例

    总结起来,"使用poi从数据库导出excel表的示例"是一个结合了Struts1 MVC框架和Apache POI库的Java编程任务,它涉及数据库连接、SQL查询、Excel文件生成以及Web应用响应。这个过程不仅有助于数据的高效管理和分享,也...

    struts2+poi实现excel文件的导出

    Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...

    Poi动态导入导出Excel基于Struts2 Hibernate Spring源码工程实例

    1.本动态导入导出Excel工程导入Eclipse即可用行,支持所有版本的Excel导入导出。 2.程序使用Struts2+POI+SQLSever(SSH即Struts2+Hibernate+Spring)实现Excel动态数据导入和导出,压缩包内含程序源码文件。

    POI web导入导出类封装!

    poi即Excel导入导出,在开发过程中了,为了提高数据录入速度, 一些系统都会使用导入功能,导入目前只能通过流的方式读写,那么为了此操作的便利性,提供此工具类,是原有的excel数据读取到泛型集合中,然后再对集合...

    ssh整合poi导入导出Excel

    在Excel导入导出过程中,Apache POI库起到了核心作用。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)API,分别用于读写旧版的Excel 97-2003格式(.xls)和较新的Excel 2007及以上...

    poi导入导出excel

    下面将详细解释如何使用 POI 实现 Excel 的导入导出功能。 首先,为了导出 Excel,我们需要创建一个 `HSSFWorkbook` 对象,这是 POI 中表示 Excel 工作簿的类。然后,我们可以创建一个或多个 `HSSFSheet` 对象来...

    struts+hibernate的导入导出

    ### Struts+Hibernate框架下的Excel文件导入导出 #### 一、引言 在软件开发过程中,Excel文件的导入导出是一项常见的需求。比如,在Web应用程序中,常常需要将原始数据从Excel文件导入到数据库中,或者将数据库中...

    struts2 poi 导入xls xlsx 绝对兼容

    以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,实现数据的导入和导出功能,提高工作效率。在实际项目中,可以...

    POI导入导出excel

    描述中提到的"poi导入导出excel文件,项目绝对可以运行,只要将项目导入myeclipse中直接在浏览器中输入http://localhost:8080/strutspoi即可运行",意味着这是一个基于Struts的Web应用程序,它已经集成了Apache POI...

    学生管理系统-数据挖掘,jsp+servlet,文件上传下载,数据库导入导出,excel导入导出。.zip

    【Excel导入导出】功能使得用户能够方便地通过Excel文件管理数据。管理员可以将现有的学生数据导入到系统中,或者将系统中的数据导出到Excel文件,便于数据分析、报告制作或者与其他系统交换数据。这个功能通常基于...

    excel导入导出bean和action

    在IT行业中,Excel导入导出是一项常见的数据处理任务,特别是在Web应用中,用户往往需要将数据导入或导出到Excel格式以便于分析、共享或备份。在这个场景中,“excel导入导出bean和action”指的是使用Java编程语言...

    Excel导出工具类

    为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache POI库创建一个能够处理`List&lt;Object&gt;`数据的Excel工具类。 Apache POI是一个流行...

    poi 导出EXCEL 例子

    本例子将详细介绍如何使用Apache POI库导出Excel文件。 首先,我们需要添加Apache POI库到我们的项目中。在给定的文件列表中,我们看到`poi-2.5.1.jar`,这是Apache POI的一个早期版本。现代项目通常会使用更新的...

    struts2+poi实现导出Excel文件.pdf

    在互联网开发中,数据的导入导出功能是常见的需求之一,尤其是对于企业级应用,能够方便用户将数据导出为Excel格式,便于分析和存储。Apache POI库是Java平台上的一个开源项目,专门用于读写Microsoft Office文件...

Global site tag (gtag.js) - Google Analytics