我们的系统遇到过此类问题,我是先d读取Excel的内容,然后将内容转化为页面的表单,在转化表单的过程中,对Excel的内容进行格式化,在保存到数据库的时候,直接读取页面表单的内容,存入数据库。

解决方案 »

  1.   

    和字段多少没关系,excel的格式一定要事先约定好固定格式
    给你个读取例子研习一下就明白了<%String filePath=nvl(request.getParameter("path"),request.getRealPath("/")+"\\test1.xls");//excel文件
    out.println(filePath);
    //out.println(subjectId+"<br>");int startRow=Integer.parseInt(nvl(request.getParameter("startRow"),"0"));//指定开始行
    int endRow=Integer.parseInt(nvl(request.getParameter("endRow"),"-1"));//结束行
    int startCol=Integer.parseInt(nvl(request.getParameter("startCol"),"0"));//指定开始列
    int endCol=Integer.parseInt(nvl(request.getParameter("endCol"),"-1"));//结束列
    int sheetNum=Integer.parseInt(nvl(request.getParameter("sheetNum"),"0"));//指定工作薄File sourcefile=new File(filePath);
    InputStream is = new FileInputStream(sourcefile);
    jxl.Workbook rwb = Workbook.getWorkbook(is);       
    Sheet rs = rwb.getSheet(sheetNum);//页
    int col = rs.getColumns();//列
    int row = rs.getRows();//行
    out.println("row="+row);
    for(int i=startRow;i<row;i++){
    if(i==endRow)break;
    if(rs.getCell(0,i).getContents().equals(""))break;
    for(int j=startCol;j<col;j++){
    Cell cell = rs.getCell(j, i);
    String strC=cell.getContents();
    out.print(strC+"|");
    if(j==endCol)break;
    }
    out.println("<br>");
    }
    is.close();}catch(Exception e1){
    out.println("error:"+e1);
    }
    %>
    <%!
    private String nvl(Object str,String val){
    if(str==null)
    return val;
    return (String)str;
    }
    %>
      

  2.   

    rs.getMetaData().getColumnTypeName(i)
    可以查出数据库字段的类型 然后做相应处理 rs 是ResultSet