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

struts2+poi和struts2+jxl实现读取EXCEL

阅读更多
今天花了半个小时,研究struts2通过第三方插件读取EXCEL功能,今贴出来,希望对网友们有用,默认的execute方法中,使用poi读取,read方法中使用jxl读取
package example;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.opensymphony.xwork2.ActionSupport;


public class ExcelAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private File excel;
	
	public File getExcel() {
		return excel;
	}
	public void setExcel(File excel) {
		this.excel = excel;
	}
	@Override
	public String execute() throws Exception {
		try{
			InputStream is = new FileInputStream(excel);
			HSSFWorkbook work = new HSSFWorkbook(is);
			HSSFSheet sheet = work.getSheetAt(0);
			if(sheet != null){
				int rows = sheet.getPhysicalNumberOfRows();
				for(int i = 0;i < rows;i++){
					HSSFRow row = sheet.getRow(i);
					for(int j = 0;j<row.getPhysicalNumberOfCells();j++){
						HSSFCell cell = row.getCell(j);
						if(HSSFCell.CELL_TYPE_STRING == cell.getCellType()){
							System.out.println("字符串:"+cell.getRichStringCellValue());
						}else if(HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()){
							System.out.println("数字:"+cell.getNumericCellValue());
						}
					}
				}
			}
			
			if(is != null){
				is.close();
			}
		}catch(Exception e){
			LOG.error("上传错误", e);
		}
		return SUCCESS;
	}

	public String read() throws Exception{
		Workbook wb = null;
        try {
        	InputStream is = new FileInputStream(excel);
            wb = Workbook.getWorkbook(is);
            Sheet[] sheets = wb.getSheets();    //获取工作 
            for(int i=0; i<sheets.length; i++) {
                Sheet sheet = sheets[i];
                for(int j=0; j<sheet.getRows(); j++) {
                    Cell[] cells = sheet.getRow(j);    //读取一列 
                    if(cells != null && cells.length > 0) {   
                        String[] dataCells = new String[cells.length];
                        for(int k=0; k<cells.length; k++) {
                            dataCells[k] = ""+cells[k].getContents();
                            System.out.println(cells[k].getContents());
                        }//column
                    }
                }//one sheet
            }//xls file
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {    
            e.printStackTrace();
        } finally {
            if(wb != null) {
                wb.close();
            }
        }

		return SUCCESS;
	}
	
}



4
2
分享到:
评论
3 楼 cqyqing 2012-11-14  
向往前途 写道
在Struts2.xml文件怎么配置啊

<constant name="struts.objectFactory" value="spring"/>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.i18n.encoding" value="GBK" />
    <constant name="struts.multipart.maxSize" value="209715200" /><!-- 200M -->
    <constant name="struts.multipart.saveDir" value="/tmp"/>


<package name="default" extends="struts-default" namespace="/">
<action name="*_*" class="{1}" method="{2}">
<result>index.jsp</result>
<result name="list">/upload.jsp</result>
<result name="mail">/mail.jsp</result>
<result name="db">/db.jsp</result>
<result name="{2}">/{2}.jsp</result>
</action>
</package>

注意红色字体配置就可以了
2 楼 向往前途 2012-11-10  
在Struts2.xml文件怎么配置啊
1 楼 66573334 2010-08-23  
正好用到顶起

相关推荐

    struts2+poi+jxl

    Struts2是一个基于MVC(Model-View-...综上所述,结合Struts2、POI和JXL,我们可以构建出强大的数据导入导出功能,以及动态生成和下载Excel报表的Web应用。这对于数据驱动的业务来说,提供了极大的便利性和灵活性。

    Struts2+JXL 下载 Excel 文档

    在"Struts2+JXL 下载 Excel 文档"的场景中,开发者通常会创建一个Action,这个Action负责生成Excel文档并提供下载。用户通过浏览器访问特定URL,Struts2框架接收到请求后,会路由到相应的Action。Action内部会利用...

    [转]java struts2+jxl生成并导出Excel

    Struts2是一个流行的Java web框架,它为开发者提供了一种结构化的方式来构建应用程序,而JXL则是一个Java库,用于读取、写入和修改Excel电子表格文件。这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成...

    jxl从数据库导出到excel工具包

    jxl是一个广泛使用的Java库,允许开发者读取、写入和修改Excel文件。这种工具包通常用于数据分析、报表生成或者需要将大量结构化数据转换为用户友好的电子表格格式的情况。 **描述分析:**"在lib导入xwork-2.1.2....

    Java web 数据库数据与excel表格形式导入导出.docx

    2. JXL 技术:JXL 技术是 Java Excel API 的缩写,是一种用于读取和写入 Excel 文件的 Java 库。JXL 技术可以用于读取和写入 Excel 文件中的数据。 3. POI 技术:POI 技术是 Apache POI 的缩写,是一种用于操作 ...

    SSH2框架所用到的jar包4

    SSH2框架,全称为Struts2、Spring和Hibernate2的集成框架,是Java Web开发中的一...在实际项目中,根据具体需求,开发者还需要结合Struts2、Spring和Hibernate的核心jar包以及其他相关库,以实现完整的业务逻辑和功能。

    java导出Excel

    - `jxl.jar` 提供了JExcelAPI,这是一个开源的Java库,用于读取、写入和修改Excel文件。使用JExcelAPI,你可以创建新的工作簿,添加工作表,设置单元格的样式和公式,以及读取已有数据。 - `poi-3.0.1.jar` 是...

    jspjboa系统

    综上所述,"jsp SSH开发的jboa系统"是一个全面的报销管理平台,集成了Java Web开发的最佳实践,包括Struts2、Spring和Hibernate框架,利用jxl库进行Excel导出,使用图表库呈现数据,以及通过SQL Server 2008来存储和...

    SSHJAR包part02

    2. **poi-2.5.1.jar**:Apache POI 是一个用于读写Microsoft Office格式文件的Java库,如Word(DOC)、Excel(XLS)和PowerPoint(PPT)。在Java程序中,可以使用POI来生成、读取和修改这些文件,尤其在数据导入导出...

    人力资源管理(基于ssh的j2ee项目)附带lib包2

    7. `poi-2.5.1.jar`:Apache POI是用于读写Microsoft Office格式文件的库,如Excel,可能用于读取或生成工资表等数据。 8. `jxl.jar`:JExcelAPI是一个Java库,用于读写Excel文件,可能是另一种用于处理Excel数据的...

    spring整合hibernate的所需jar包

    8. **jxl.jar**:与POI类似,jxl库也是处理Excel文件的,但版本较旧,可能已不再维护,建议使用POI。 9. **c3p0-0.9.1.2.jar**:C3P0是一个数据库连接池,它提高了数据库连接的效率,通过复用已打开的数据库连接,...

    ext -jar ext -jar第二部分

    2. **xercesImpl-2.6.2.jar**: Xerces是Apache组织提供的一款开源XML解析器,用于读取、解析和验证XML文档。XercesImpl是其实现的核心组件,这个版本(2.6.2)可能较旧,但仍然是许多项目的基础。 3. **freemarker-...

    SSH 中jar包说明

    - **作用**:支持Excel文件的读取和写入,方便进行数据分析和报表生成。 #### 26. **log4j-1.2.14.jar** - **用途**:Log4j是一个开放源代码的日志记录工具。 - **作用**:提供了灵活的日志记录机制,包括日志级别...

Global site tag (gtag.js) - Google Analytics