香帅 2010-05-28
今天花了半个小时,研究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;
}
}