zoukankan      html  css  js  c++  java
  • 第二则java读取excel文件代码

    // 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全  
    String savePath = this.getServletContext().getRealPath(  
            "/WEB-INF/upload");  
    // 上传时生成的临时文件保存目录  
    String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");  
    int serverid = 0;  
    int sid = 0;  
    int gid = 0;  
    byte answerLibraryType = 0;  
    String className = "";  
    String roleName = "";  
    boolean bool = true;//判断数据是否正确  
    File tmpFile = new File(tempPath);  
    StringBuffer str = new StringBuffer();  
    if (!tmpFile.exists()) {  
        // 创建临时目录  
        tmpFile.mkdir();  
    }  
    // 消息提示  
    String message = "";  
    try {  
      
        // 使用Apache文件上传组件处理文件上传步骤:  
        // 1、创建一个DiskFileItemFactory工厂  
        DiskFileItemFactory factory = new DiskFileItemFactory();  
        factory.setSizeThreshold(1024 * 100);// 设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB  
        // 设置上传时生成的临时文件的保存目录  
        factory.setRepository(tmpFile);  
        // 2、创建一个文件上传解析器  
        ServletFileUpload upload = new ServletFileUpload(factory);  
        upload.setProgressListener(new ProgressListener() {  
      
            @Override  
            public void update(long pBytesRead, long pContentLength,  
                    int arg2) {  
                // TODO Auto-generated method stub  
                System.out.println("文件大小为:" + pContentLength + ",当前已处理:"  
                        + pBytesRead);  
            }  
        });  
        // 解决上传文件名的中文乱码  
        upload.setHeaderEncoding("UTF-8");  
        // 3、判断提交上来的数据是否是上传表单的数据  
        if (!ServletFileUpload.isMultipartContent(request)) {  
            // 按照传统方式获取数据  
            return;  
        }  
        // 设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB  
        upload.setFileSizeMax(1024 * 1024);  
        // 设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB  
        upload.setSizeMax(1024 * 1024 * 10);  
        // 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项  
        @SuppressWarnings("unchecked")  
        List<FileItem> list = upload.parseRequest(request);  
        // 实验添加一个目录到ftp  
        for (FileItem item : list) {  
            // 如果fileitem中封装的是普通输入项的数据  
            if (item.isFormField()) {  
                String name = item.getFieldName();  
                // 解决普通输入项的数据的中文乱码问题  
                String value = item.getString("UTF-8");  
                if (name.equals("serverid")) {  
                    serverid = Integer.parseInt(value);  
                }  
                if (name.equals("sid")) {  
                    sid = Integer.parseInt(value);  
                }  
                if (name.equals("gid")) {  
                    gid = Integer.parseInt(value);  
                }  
                if (name.equals("answerLibraryType")) {  
                    answerLibraryType = Byte.parseByte(value);  
                }  
                if (name.equals("className")) {  
                    className = value;  
                }  
                if (name.equals("roleName")) {  
                    roleName = value;  
                }  
                System.out.println(name + "=" + value);  
            } else {// 如果fileitem中封装的是上传文件  
                    // 得到上传的文件名称  
                String filename = item.getName();  
                System.out.println(filename);  
                if (filename == null || filename.trim().equals("")) {  
                    continue;  
                }  
                // 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  
                // c:a1.txt,而有些只是单纯的文件名,如:1.txt  
                // 处理获取到的上传文件的文件名的路径部分,只保留文件名部分  
                filename = filename  
                        .substring(filename.lastIndexOf("\") + 1);  
                String fileExtName = filename.substring(filename  
                        .lastIndexOf(".") + 1);  
                // 如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法  
                System.out.println("上传的文件的扩展名是:" + fileExtName);  
                if(fileExtName=="xls"){  
                    message = "上传文件格式错误,请将文件格式转换成xls格式";  
                }else{  
                    // 获取item中的上传文件的输入流  
                    InputStream is = item.getInputStream();  
                    Workbook rwb = Workbook.getWorkbook(is);  
                    // 这里有两种方法获取sheet表:名字和下标(从0开始)  
                    // Sheet st = rwb.getSheet("original");  
                    Sheet st = rwb.getSheet(0);  
                    // Sheet的下标是从0开始  
                    // 获取第一张Sheet表  
                    Sheet rst = rwb.getSheet(0);  
                    // 获取Sheet表中所包含的总列数  
                    int rsColumns = rst.getColumns();  
                    // 获取Sheet表中所包含的总行数  
                    int rsRows = rst.getRows();  
                    // 获取指定单元格的对象引用  
                    for (int i = 0; i < rsRows; i++) {  
                        for (int j = 0; j < rsColumns; j++) {  
                            Cell cell = rst.getCell(j, i);  
                            if(cell.getContents()==null || cell.getContents().length()<1){  
                                message = "该文件第"+(i+1)+"行,第"+(j+1)+"列为空或者有错误!请检查文件,修改之后重新上传!";  
                                bool = false;  
                                break;  
                            }  
                            str.append(cell.getContents()).append("#");  
                        }  
                        str.append("_");  
                        System.out.println(str.toString());  
                    }  
                    // 关闭  
                    rwb.close();  
                    // 删除处理文件上传时生成的临时文件  
                    item.delete();  
                    if(!bool){  
                        break;  
                    }  
                }  
            }  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  

    上述需要的jar包  :jxl.jar

    jsp标签:

     
    <table  class="item" id="items">  
            <tr  class="info">  
                <td colspan ="1">  
                    <label>上传答题</label>  
                </td>  
                <td colspan ="1">  
                    <input type="file" name="file[1]" id="fileid"/>   
                </td>  
            </tr>  
        </table>  
  • 相关阅读:
    图->存储结构->十字链表
    图->存储结构->邻接表
    P2278-[HNOI2003]操作系统
    P1801-黑匣子_NOI导刊2010提高(06)
    P1197-[JSOI2008]星球大战
    P2024- [NOI2001]食物链
    P1111-修复公路
    ACM模板——二分图匹配
    P2055-[ZJOI2009]假期的宿舍
    ACM模板——强连通分量
  • 原文地址:https://www.cnblogs.com/pegasus827/p/9175109.html
Copyright © 2011-2022 走看看