问题:  fs = new POIFSFileSystem(new FileInputStream("c:\\AAA.xls"));  ========路径是写死的,请问如何使每个用户上传他们各自不同的EXCEL文件,如果这么写,所有的用户都上传服务器C盘下的AA EXCEL文件。如何让每个用户上传他们自己的EXCEL呢?这里应该怎么写?是不是需要每个用户都传一个值,这个值就是他本地的EXCEL路径,但是应该如何写呢?着急,请各位帮忙!
------------------------------------------------------------
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盘下的AA EXCEL文件。如何让每个用户上传他们自己的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){} 
String sql = "insert into listuser(username) values('"+name+"')";
   try {
    stmt.executeUpdate(sql);
   } catch (SQLException e1) {
    e1.printStackTrace();
    return false;
   }
  }
  return true;
 }
}

解决方案 »

  1.   

    每个人上传他们自己的EXCEL文件,按照我上面写的,只能上传同一个EXCEL文件(fs = new POIFSFileSystem(new FileInputStream("c:\\AAA.xls"));  就是服务器C盘下的EXCEL)如何使每个用户都上传自己的EXCEL文件导入到数据库中?
      

  2.   

    从session得到用户名作为文件名不就可以了么
      

  3.   

    在我的原代码的基础上,能举个代码示例吗?每个用户的EXCEL路径应该如何写?我原来以为这么写fs = new POIFSFileSystem(new FileInputStream("c:\\AAA.xls")),就是上传每一个用户的C:\excel文件,但是测试的时候发现只能上传服务器上部署的文件,不是每个用户的!
      

  4.   

    弹出来个选择路径的对话框就ok了(类似JFileChooser)设置一下类型为.xls文件。
    用户自己选择文件
      

  5.   

    你得程序不是用来上穿的!!fs = new POIFSFileSystem(new FileInputStream("c:\\AAA.xls"));
    wb = new HSSFWorkbook(fs);这两句是用来生成Excel的。没有做上传。你应该是先上传然后再用这两句话吧