求JSP上传execle并把数据导入oracle的某表中的列子!
最好详细点,本人是新手...
已经忙呼很久都没解决,请大家帮忙!

解决方案 »

  1.   

    以前做过。用fileupload+jxl实现的。例子找不到了。
      

  2.   

    通过SmartUpload上传Excel,然后从上传的文件中读数据并存入Oracle。上传文件:
    add.jsp:
    <form action="addDo.jsp" method="post" ENCTYPE="multipart/form-data">
    <input name="ann" type="file">
    <input type="submit" value=提交>
    </form>addDo.jsp:
    <jsp:useBean id="myUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
    <%
    myUpload.initialize(pageContext);
    myUpload.upload();  
    try{
        filepath=myUpload.getFiles().getFile(0).getFileName();
        myUpload.getFiles().getFile(0).saveAs("/user/files/"+filepath);
    }catch(Exception ex){
        out.print(ex.getMessage());
    }
    %>从Excel中读数据(需要jxl.jar):
    Workbook info = Workbook.getWorkbook(new File("f:/2006FootBall.xls"));
    Sheet sheet = info.getSheet(0);//获取第一个工作表
    int size = sheet.getRows();//获取工作表中的有效行数
    for(int i = 0;i < size;i++){
        Cell c = sheet.getCell(0,i);//括号中的两个参数分别代表(列,行)
        String c1 = c.getContents();
        c = sheet.getCell(1,i);
        String c2 = c.getContents();
        ...
        //可以把数据暂时存入List
        list.add(c1+"/"+c2+"/"...);
    }
    info.close();
      

  3.   

    anchor1(聪头) 稍微改下就能用了,String filepath=myUpload.getFiles().getFile(0).getFileName();
    然后再在相应的目录下创建文件夹
      

  4.   

    /*
     * Created on 2004-11-5
     *
     * java读取excel文件
     *
     */
    package readxls;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.text.DecimalFormat;
    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;
    /**
     * 
     * @author shiwt
     * 
     * java读取excel文件
     * 
     * 一个Excel文件的层次:Excel文件->工作表->行->单元格 对应到POI中,为:workbook->sheet->row->cell
     *  
     */
    public class POItest {
     public static String outputFile = e:\\test\\tels.xls;
     public static String fileToBeRead = e:\\test\\tels.xls;
     public void CreateExcel() {
      try {
       // 创建新的Excel 工作簿
       HSSFWorkbook workbook = new HSSFWorkbook();
       // 在Excel工作簿中建一工作表,其名为缺省值
       // 如要新建一名为效益指标的工作表,其语句为:
       // HSSFSheet sheet = workbook.createSheet(效益指标);
       HSSFSheet sheet = workbook.createSheet();
       // 在索引0的位置创建行(最顶端的行)
       HSSFRow row = sheet.createRow((short) 0);
       //在索引0的位置创建单元格(左上端)
       HSSFCell cell = row.createCell((short) 0);
       // 定义单元格为字符串类型
       cell.setCellType(HSSFCell.CELL_TYPE_STRING);
       // 在单元格中输入一些内容
       cell.setCellValue(sweater);
       // 新建一输出文件流
       FileOutputStream fOut = new FileOutputStream(outputFile);
       // 把相应的Excel 工作簿存盘
       workbook.write(fOut);
       fOut.flush();
       // 操作结束,关闭文件
       fOut.close();
       System.out.println(文件生成...);
      } catch (Exception e) {
       System.out.println(已运行 xlCreate() : + e);
      }
     }
     /**
      * 
      * 读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示
      * 
      * 
      * 注意: 1.sheet, 以0开始,以workbook.getNumberOfSheets()-1结束 2.row,
      * 以0开始(getFirstRowNum),以getLastRowNum结束 3.cell,
      * 以0开始(getFirstCellNum),以getLastCellNum结束, 结束的数目不知什么原因与显示的长度不同,可能会偏长
      *  
      */
     public void readExcel() {
      //将被表示成1.3922433397E10的手机号转化为13922433397,不一定是最好的转换方法
      DecimalFormat df = new DecimalFormat(#);
      try {
       // 创建对Excel工作簿文件的引用
       HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
         fileToBeRead));
       //System.out
       //  .println(===SheetsNum=== + workbook.getNumberOfSheets());//获取sheet数
       for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
        if (null != workbook.getSheetAt(numSheets)) {
         HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
         //System.out.println(+++getFirstRowNum+++ +
         // aSheet.getFirstRowNum());//
         //System.out.println(+++getLastRowNum+++ +
         // aSheet.getLastRowNum());
         for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet
           .getLastRowNum(); rowNumOfSheet++) {
          if (null != aSheet.getRow(rowNumOfSheet)) {
           HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
           //System.out.println(>>>getFirstCellNum<<<+
           // aRow.getFirstCellNum());
           //System.out.println(>>>getLastCellNum<<<+
           // aRow.getLastCellNum());
           for (short cellNumOfRow = 0; cellNumOfRow <= aRow
             .getLastCellNum(); cellNumOfRow++) {
            if (null != aRow.getCell(cellNumOfRow)) {
             HSSFCell aCell = aRow.getCell(cellNumOfRow);
             int cellType = aCell.getCellType();
             //System.out.println(cellType);
             switch (cellType) {
             case 0://Numeric
              String strCell = df.format(aCell
                .getNumericCellValue());           System.out.println(strCell);
              
              break;
             case 1://String
              strCell = aCell.getStringCellValue();           System.out.println(strCell);
              
              break;
             default:
             //System.out.println(格式不对不读);//其它格式的数据
             }
            }
           }
          }
         }
        }
       }
      } catch (Exception e) {
       System.out.println(ReadExcelError + e);
      }
     }
      public static void main(String[] args) {
      POItest poi = new POItest();
      //poi.CreateExcel();
      poi.readExcel();
     }
    } 不是上传,而是通过apache的poi读写excel 你可以再查查,也可以用jxl.jar包