Java如何连接excel,获取excel表数据.而且是按原有的数据顺序取?

解决方案 »

  1.   

    用poi就可以
    public List readAsTable(String filePath,String sheetName) throws Exception{
    List list=new ArrayList();

    File file=new File(filePath);
    InputStream eis =new FileInputStream(file);
    HSSFWorkbook workbook=new HSSFWorkbook(eis);
    HSSFSheet sheet=workbook.getSheet(sheetName);
    Iterator rowiter= sheet.rowIterator();


    Map colmnsMap=new HashMap();
    int colmns=0;
    if(rowiter.hasNext()){
    HSSFRow row=(HSSFRow) rowiter.next();
    Iterator celliter= row.cellIterator();
    HSSFCell cell=null;
    while(celliter.hasNext()){
    colmns++;
    cell=(HSSFCell) celliter.next();
    if(cell==null||cell.toString().trim().equals("")){
    System.out.println("在表头的第"+colmns+"列发生错误!");
    break;
    }
    colmnsMap.put(""+colmns, cell.toString());
    }
    }


    int rows=1;
    while(rowiter.hasNext()){
    try{
    HSSFRow row=(HSSFRow) rowiter.next();

    Iterator celliter= row.cellIterator();
    HSSFCell cell=null;

    int cols=0;
    Map cells=new  HashMap();

    while(celliter.hasNext()&&cols<=colmns){
    cols++;
    cell=(HSSFCell) celliter.next();
    if(cell==null||cell.toString().trim().equals("")){
    System.out.println("在第"+rows+"行发生错误![第"+cols+"列]");
    break;
    }
    cells.put("key", colmnsMap.get(""+cols));
    cells.put("value", cell.toString());

    }
    list.add(cells);
    rows++;
    }catch(Exception e){
    System.out.println("在第"+rows+"行发生错误!");
    break;
    }
    }
    return list;

      

  2.   

    先配置数据源import java.sql.*;public class TestDBExcel {
    public static void main(String[] args) {
    try {
    //First,load driver program
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //Second,create connection 
    String url="jdbc:odbc:odbcexcel";
    String user="";
    String password="";
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;

    con=DriverManager.getConnection(url, user, password);
    st=con.createStatement();
    rs=st.executeQuery("select * from [student$]");
    System.out.println("编号\t"+"姓名\t"+"性别\t"+"年龄");
    while(rs.next())
    {
    System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4));
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    }
      

  3.   

    poi apache的开源项目 url:http://poi.apache.org/ 可以把jar下下来看看,里面有英文的api
      

  4.   

    用2楼的POI吧,我也用过,他从里面取出来数据就是按照EXCEL表格从上到下自己的编号顺序取的
      

  5.   

    哎,本来想用JAVA做,结果考虑到用JAVA做的应用程序不能直接运行。又要换C#做
      

  6.   

    这个可以用poi 或者 jxl 网上的资料很多!!
      

  7.   

    用jxl完全可以,顺序读取也就是一行一行都,完全可以控制,下面是部分代码。
    File pro_xml = new File(fx_path);//new 一个文件  fx_path 是excel路径
     InputStream is = new FileInputStream(pro_xml);
     Workbook sourceBook = Workbook.getWorkbook(is);
     Sheet sheet = sourceBook.getSheet(0);//getSheet(0) 这个0意思是 excel表的第一个sheet
     for (int j = 0; j < sheet.getRows(); j++) {
                String subject = sheet.getCell("B" + String.valueOf(j + 1)).
                    getContents();for循环里面就可以把拿到数据做自己想做的事情
      

  8.   

    有什么限制不能用
    SQL嗎?insert into tab select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;IMEX=1;DATABASE=e:\cel.xls','select * from [sheet1$]')
      

  9.   

    对的,使用jxl.jar,然后上网找找如何使用jxl读写xls文件的例子即可
    jxl仅可以操作97~03格式(xls)的文件,2007格式的不支持