分享

java读取excel文件

 开心豆豆2010 2010-09-07
package homework.dao;  
 
import homework.model.UserInfo;  
 
import java.io.*;  
import java.text.DateFormat;  
import java.util.*;  
 
import org.apache.poi.*;  
import org.apache.poi.ss.usermodel.C
package homework.dao;  
 
import homework.model.UserInfo;  
 
import java.io.*;  
import java.text.DateFormat;  
import java.util.*;  
 
import org.apache.poi.*;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.DateUtil;  
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.poi.ss.usermodel.WorkbookFactory;  
 
/* 
 *  读取Excel文件实现批量导入用户信息 
 *  JasonHu 03-20 
 */ 
public class BatchImport {  
  // 定义EXCEL模板文件中列名位置信息  
  private final int iPosUserName = 0; // 用户名  
  private final int iPosPwd = 1; //密码  
  private final int iPosName = 2; // 真实姓名  
  private final int iPosSex = 3; // 性别  
  private final int iPosClass = 4; //班级  
  private final int iPosRole = 5; //用户类别  
  private final int iPosPhone = 6; // 手机号码  
 
  //用户链表  
  List<UserInfo> list = new ArrayList<UserInfo> ();  
  public boolean debug=true;  
  public BatchImport() {  
  }  
 
  /* 
   *  fileName 要读取的文件名称 
   *  读取EXCEL文件 
   *  jason 03-20 
   */ 
  public List getInstance(String fileName) {  
 
    List lst = this.readFile(fileName);  
    String errorMsg=this.getError();  
    if(!debug)  
    {  
      lst=null;  
    }  
    return lst;  
  }  
 
  /* 
   *  对获取的Excel数据进行类型判断 
   *  JasonHu 03-20 
   */ 
  private String getValue(Cell cell) {  
    String ret = null;  
    if (cell == null)  
      return ret;  
    try {  
      switch (cell.getCellType()) {  
        //字符串  
        case Cell.CELL_TYPE_STRING:  
          ret = cell.getRichStringCellValue().getString();  
          break;  
          //日期  
        case Cell.CELL_TYPE_NUMERIC:  
          if (DateUtil.isCellDateFormatted(cell)) {  
            ret = cell.getDateCellValue().toLocaleString();  
          }  
          // 其他格式的数据  
          else {  
            double temp = cell.getNumericCellValue();  
            Double dt = new Double(temp);  
            ret = String.format("%d", dt.longValue());  
          }  
          break;  
      }  
    }  
    catch (Exception e) {  
      e.printStackTrace();  
    }  
    return ret;  
  }  
 
  /* 
   * 错误代码提示 
   * JasonHu 03-20 
   */ 
  public String getError() {  
 
    StringBuffer errorMsg = new StringBuffer("Error: \n");  
    for (UserInfo user : list) {  
      //判断用户姓名  
      if (user.getUserName() == null) {  
        errorMsg.append("\n 姓名 不可为空! \n");  
        debug=false;  
      }  
      else {  
        if (user.getUserName().length() > 32 || user.getUserName().length() < 1) {  
          errorMsg.append("姓名 长度应在0-32位之间! \n");  
          debug=false;  
        }  
      }  
      //判断用户密码  
      if (user.getPsw() == null) {  
        errorMsg.append("密码 不可为空! \n");  
        debug=false;  
      }  
      else {  
        if (user.getPsw().length() < 6) {  
          errorMsg.append("密码 长度应大于6! \n");  
          debug=false;  
        }  
      }  
      //判断性别  
      if (user.getSex() == null) {  
        errorMsg.append("性别 不可为空! \n");  
        debug=false;  
      }  
      else {  
        if (!user.getSex().trim().equals("男") && !user.getSex().trim().equals("女")) {  
          errorMsg.append("性别 错误!(男/女) \n");  
          debug=false;  
        }  
      }  
      //判断班级  
      if (user.getClassName() == null) {  
        errorMsg.append("班级 不可为空! \n");  
        debug=false;  
      }  
      //判断类别  
      if (user.getRole() == null) {  
        errorMsg.append("类别 不可为空! \n");  
        debug=false;  
      }else 
      {  
        if(!user.getRole().trim().equals("教师") && !user.getRole().trim().equals("学生"))  
        {  
          errorMsg.append("类别 错误! \n");  
          debug=false;  
        }  
      }  
      //判断电话号码  
      if (user.getPhone() != null) {  
        if ( (user.getPhone().length() != 7) && (user.getPhone().length() != 8) &&  
            (user.getPhone().length() != 11)) {  
          errorMsg.append("电话号码 长度错误! \n");  
          debug=false;  
        }  
      }  
    }  
    return errorMsg.toString();  
  }  
 
  /* 
   * 读取Excel文件 
   * JasonHu 03-20 
   */ 
  public List readFile(String fileName) {  
 
    try {  
      InputStream is = new FileInputStream(fileName);  
      Workbook workbook = WorkbookFactory.create(is);  
      Sheet sheet = workbook.getSheetAt(0);  
      // 遍历  
      for (Row row : sheet) {  
        if (row.getRowNum() < 2) {  
          continue;  
        }  
        UserInfo user = new UserInfo();  
        Cell cell = row.getCell(iPosName);  
        if(cell==null)  
        {  
          break;  
        }  
        // 用户名  
        user.setUserName(this.getValue(cell));  
        //密码  
        cell = row.getCell(iPosPwd);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setPsw(this.getValue(cell));  
 
        //真实姓名  
        cell = row.getCell(iPosName);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setName(this.getValue(cell));  
 
        //性别  
        cell = row.getCell(iPosSex);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setSex(this.getValue(cell));  
 
        //班级  
        cell = row.getCell(iPosClass);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setClassName(this.getValue(cell));  
 
        //类别  
        cell = row.getCell(iPosRole);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setRole(this.getValue(cell));  
 
        //电话  
        cell = row.getCell(iPosPhone);  
        if(cell==null)  
        {  
          break;  
        }  
        user.setPhone(this.getValue(cell));  
 
          //System.out.println(user.getUserName()+"\t"+user.getPsw()+"\t"+user.getName()+"\t"+user.getSex()+"\t"+user.getClassName()  
        //   +"\t"+user.getRole()+"\t"+user.getPhone());  
        //添加用户至List  
        list.add(user);  
      }  
    }  
    catch (FileNotFoundException e) {  
      e.printStackTrace();  
    }  
    catch (Exception e) {  
      e.printStackTrace();  
    }  
    if (list.size() == 0) {  
      list = null;  
    }  
    return list;  
  }  
 
}
 
本篇文章来源于:开发学院 http://edu.   原文链接:http://edu./2009/1201/18349.php

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约