首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

POI读取EXCEL文件导入数据库源程序(源码),关于用户各自导入EXCEL的有关问题

2012-01-10 
POI读取EXCEL文件导入数据库源程序(源码),关于用户各自导入EXCEL的问题!fsnewPOIFSFileSystem(newFileInp

POI读取EXCEL文件导入数据库源程序(源码),关于用户各自导入EXCEL的问题!
fs   =   new   POIFSFileSystem(new   FileInputStream( "c:\\AAA.xls "));     =====这么写,将路径写死,发现每个用户导入的都是服务器上的EXCEL文件,原来我以为导入的都是用户机器上C盘下的AAA.xls文件,请问如何使每个用户导入他们各自的EXCEL文件?应该怎么写?

以下是POI的源程序:
package   poi;
import   java.io.FileInputStream;
import   java.io.IOException;
import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.SQLException;
import   java.sql.Statement;
import   java.util.*;
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;
import   org.apache.poi.poifs.filesystem.POIFSFileSystem;


public   class   POITest   {
public   static   Connection   conn   =   null;
public   static   Statement   stmt   =   null;
public   static   boolean   connectDB2()   {
    try   {
      Class.forName( "org.gjt.mm.mysql.Driver ");
      String   url   =   "jdbc:mysql://localhost:3306/dstore ";
      conn   =   DriverManager.getConnection(url, "root ", "111111 ");
      stmt   =   conn.createStatement();
    }
    //捕获加载驱动程序异常
    catch   (ClassNotFoundException   cnfex)   {
      System.err.println( "装载JDBC驱动程序失败。 ");
      cnfex.printStackTrace();
      return   false;
    }
    //捕获连接数据库异常
    catch   (SQLException   sqlex)   {
      System.err.println( "无法连接数据库 ");
      sqlex.printStackTrace();
      //System.exit(1);   //   terminate   program
      return   false;
    }
    return   true;
  }

  public   static   boolean   readExcelToDB2(String   userName)   {
    POIFSFileSystem   fs   =   null;
    HSSFWorkbook   wb   =   null;
    try   {
      fs   =   new   POIFSFileSystem(new   FileInputStream( "c:\\AAA.xls "));     =====这么写,将路径写死,发现每个用户导入的都是服务器上的EXCEL文件,原来我以为导入的都是用户机器上C盘下的AAA.xls文件,请问如何使每个用户导入他们各自的EXCEL文件?应该怎么写?
      wb   =   new   HSSFWorkbook(fs);
    }   catch   (IOException   e)   {
      e.printStackTrace();
      return   false;
    }
    HSSFSheet   sheet   =   wb.getSheetAt(0);
    HSSFRow   row   =   null;
    HSSFCell   cell   =   null;
    String   name   =   " ";
    long   aa   =0;
    String   company   =   " ";
    long   phone   =0;
    long   mobile   =0;
      String   email   =   " ";
            String   zu   =   " ";
    int   rowNum,   cellNum;
    int   i;


    rowNum   =   sheet.getLastRowNum();
    for   (i   =   1;   i   <=   rowNum;   i++)   {
      row   =   sheet.getRow(i);
      //cellNum   =   row.getLastCellNum();
        try{
      cell   =   row.getCell((short)   0);
  cell.setEncoding(HSSFCell.ENCODING_UTF_16);
  name   =   cell.getStringCellValue().trim();

name=new   String(name.getBytes( "GBK "), "latin1 ");
}catch(Exception   e){

}

try{
  cell   =   row.getCell((short)   1);
      aa   =   (long)   cell.getNumericCellValue();
}catch(Exception   e){

}

String   sql   =   "insert   into   listuser(username,password)   values( ' "+name+ " ', ' "+aa+ " ') ";
      try   {
        stmt.executeUpdate(sql);
      }   catch   (SQLException   e1)   {
        e1.printStackTrace();
        return   false;
      }
    }
    return   true;
  }
}

-------------------------------
以下是调用POI的JSP程序:
<%
    String   username   =   " ";
    if(session.getAttribute( "username ")!=null)
      username   =   session.getAttribute( "username ").toString();
    if   (!username.equals( " "))   {
%>
<%}   else   {%>
  <%   response.sendRedirect( "index.jsp ");%>
<%}%>  
<%@page   contentType= "text/html;charset=GB2312 "%>

<%@   page   import= "poi.POITest "%>
<%
  String   uusermobile=request.getParameter( "username ");
boolean   connectToDB   =   POITest.connectDB2();
if(connectToDB){
      boolean   tureOrfalse   =   POITest.readExcelToDB2(uusermobile);

      if   (tureOrfalse==true){
            out.println( "数据导入成功 ");
      }else{
            out.println( "数据导入失败 ");
      }
}else{
      out.println( "连接数据库失败! ");
}
%>

------------------------------

请问如何使每个用户导入他们各自的EXCEL文件?应该怎么写?

[解决办法]
HSSFWorkbook wb = new HSSFWorkbook();
POIFSFileSystem fs = null;
FileInputStream fis = null;
try {
fis = new FileInputStream( "c:\\workbook.xls ");//本地路径

fs = new POIFSFileSystem(fis);
wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = null;
cell = row.getCell((short) 0);
System.out.println(cell.getStringCellValue());
FileOutputStream fileOut = new FileOutputStream( "D:\\workbook.xls ");//上传路径
wb.write(fileOut);
fileOut.close();
} catch (FileNotFoundException e) {


// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[解决办法]
估计楼主是搞得b/s模式,你得先让用户上传他本地的Excel文件!

后台程序都是在服务器跑得,不可能取客户机的文件操作,要不就是病毒木马了。
[解决办法]
先实现上传
再导入

我用jxl就是这么实现的,
但是,上传的文件要重命名,防止用户上传相同的文件名
另外,导入结束后,别忘了把上传的文件删除,要不时间久了,上传文件的目录会很大、特大、以及超大

热点排行