您的位置:首页 > 编程语言 > Java开发

java上传excel文件并读取表格信息

2017-12-14 17:14 423 查看
public void readExcel()throws Exception{

        HttpServletRequest request = ServletActionContext.getRequest();

        HttpServletResponse response= Struts2Utils.getResponse();

        //获取要保存文件夹的物理路径(绝对路径)

        String realPath="E:/DWSurvey/src/main/webapp/file/upload/";

        String filename=UUID.randomUUID().toString().replaceAll("-", "")+".xls";

        File file = new File(realPath);       

        //测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

        if(!file.exists())file.mkdirs();     

        try {

            //保存文件

            FileUtils.copyFile(myFile, new File(file,filename));//myFile可当参数传进来,这边用的structs2是在外面定义了这个属性

        } catch (IOException e) {

            e.printStackTrace();

        }

        List<PageData> listPd = (List)ObjectExcelRead.readExcel(realPath, filename, 2, 0, 0);    //执行读EXCEL操作,读出的数据导入List 2:从第3行开始;0:从第A列开始;0:第0个sheet    

        /**

         * var0 :昵称

         * var1 :登录名

         * var2 :邮箱

         * var3 :角色

         * var4 :学校

         * var5 :密码

         */

        for(int i=0;i<listPd.size();i++){
            System.out.println(listPd.get(i).getString("var0"))

       }     

    }

//PageDate类

public class PageData extends HashMap implements Map{

    

    private static final long serialVersionUID = 1L;

    

    Map map = null;

    HttpServletRequest request;

    

    public PageData(HttpServletRequest request){

        this.request = request;

        Map properties = request.getParameterMap();

        Map returnMap = new HashMap();

        Iterator entries = properties.entrySet().iterator();

        Map.Entry entry;

        String name = "";  

        String value = "";  

        while (entries.hasNext()) {

            entry = (Map.Entry) entries.next();

            name = (String) entry.getKey();

            Object valueObj = entry.getValue();

            if(null == valueObj){

                value = "";

            }else if(valueObj instanceof String[]){

                String[] values = (String[])valueObj;

                for(int i=0;i<values.length;i++){

                     value = values[i] + ",";

                }

                value = value.substring(0, value.length()-1);

            }else{

                value = valueObj.toString();

            }

            returnMap.put(name, value);

        }

        map = returnMap;

    }

    

    public PageData() {

        map = new HashMap();

    }

    

    public Map getMap() {

        return map;

    }

    

    @Override

    public Object get(Object key) {

        Object obj = null;

        if(map.get(key) instanceof Object[]) {

            Object[] arr = (Object[])map.get(key);

            obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]);

        } else {

            obj = map.get(key);

        }

        return obj;

    }

    

    public String getString(Object key) {

        return (String)get(key);

    }

    

    @SuppressWarnings("unchecked")

    @Override

    public Object put(Object key, Object value) {

        return map.put(key, value);

    }

    

    @Override

    public Object remove(Object key) {

        return map.remove(key);

    }

    public void clear() {

        map.clear();

    }

    public boolean containsKey(Object key) {

        // TODO Auto-generated method stub

        return map.containsKey(key);

    }

    public boolean containsValue(Object value) {

        // TODO Auto-generated method stub

        return map.containsValue(value);

    }

    public Set entrySet() {

        // TODO Auto-generated method stub

        return map.entrySet();

    }

    public boolean isEmpty() {

        // TODO Auto-generated method stub

        return map.isEmpty();

    }

    public Set keySet() {

        // TODO Auto-generated method stub

        return map.keySet();

    }

    @SuppressWarnings("unchecked")

    public void putAll(Map t) {

        // TODO Auto-generated method stub

        map.putAll(t);

    }

    public int size() {

        // TODO Auto-generated method stub

        return map.size();

    }

    public Collection values() {

        // TODO Auto-generated method stub

        return map.values();

    }

}

//readExcel方法

public class ObjectExcelRead {

    /**

     * @param filepath //文件路径

     * @param filename //文件名

     * @param startrow //开始行号

     * @param startcol //开始列号

     * @param sheetnum //sheet

     * @return list

     */

    public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {

        List<Object> varList = new ArrayList<Object>();

        try {

            File target = new File(filepath, filename);

            FileInputStream fi = new FileInputStream(target);

            HSSFWorkbook wb = new HSSFWorkbook(fi);

            HSSFSheet sheet = wb.getSheetAt(sheetnum);                     //sheet 从0开始

            int rowNum = sheet.getLastRowNum() + 1;                     //取得最后一行的行号

            for (int i = startrow; i < rowNum; i++) {                    //行循环开始

                

                PageData varpd = new PageData();

                HSSFRow row = sheet.getRow(i);                             //行

                int cellNum = row.getLastCellNum();                     //每行的最后一个单元格位置

                for (int j = startcol; j < cellNum; j++) {                //列循环开始

                    

                    HSSFCell cell = row.getCell(Short.parseShort(j + ""));

                    String cellValue = null;

                    if (null != cell) {

                        switch (cell.getCellType()) {                     // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库

                        case 0:

                            cellValue = String.valueOf((int) cell.getNumericCellValue());

                            break;

                        case 1:

                            cellValue = cell.getStringCellValue();

                            break;

                        case 2:

                            cellValue = cell.getNumericCellValue() + "";

                            // cellValue = String.valueOf(cell.getDateCellValue());

                            break;

                        case 3:

                            cellValue = "";

                            break;

                        case 4:

                            cellValue = String.valueOf(cell.getBooleanCellValue());

                            break;

                        case 5:

                            cellValue = String.valueOf(cell.getErrorCellValue());

                            break;

                        }

                    } else {

                        cellValue = "";

                    }

                    

                    varpd.put("var"+j, cellValue);

                    

                }

                varList.add(varpd);

            }

        } catch (Exception e) {

            System.out.println(e);

        }

        

        return varList;

    }

   

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: