日期:2014-05-20  浏览次数:20762 次

求助java读取excel文件,再写到数据库中遇到了问题!
我想用javaexcel   api读取excel文件,再写到mysql数据库中遇到了问题!
其中excel中有67个字段,第一行为表头,所以从第二行读取,依次写到数据库中。
程序代码如下:
import   java.io.File;
import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.ResultSet;
import   java.sql.Statement;
import   jxl.Cell;
import   jxl.Sheet;
import   jxl.Workbook;
public   class   ReadXLS  
{  
  public   static   void   main(String   args[])  
    {  
    try  
    {  
//打开文件
    Workbook   book=  
    Workbook.getWorkbook(new   File( "测试.xls "));  

//获得第一个工作表对象  
    Sheet   sheet=book.getSheet(0);  

    System.out.println( "共有 "+sheet.getColumns()+ "列! ");     //输出   “共有6列”
    System.out.println( "共有 "+sheet.getRows()+ "行! ");     //输出   “共有7行”
   
   
//要求xls模板和数据表字段要一一对应    
        Connection   con=null;
        Statement   stmt=null;
       
        Class.forName( "com.mysql.jdbc.Driver ").newInstance();//加载驱动程序
        String   url= "jdbc:mysql://localhost:3306/dhgl1 ";          
        con=DriverManager.getConnection(url, "root ", "root ");           //建立连接
        System.out.println( "数据库连接成功,准备插入数据...... ");  
       
        stmt=con.createStatement();    
        String   sql= " ";
       
        for   (int   j=1;j <sheet.getRows();j++)//从第二行开始插入(第一行为表头)
        {
            Cell   cell[]=sheet.getRow(j);     //获取第j+1行数据
           
            System.out.println( "chang   du   shi   :   "+cell.length);     //如果第67(最后一列)行数据为空,则输出66,若不为空则输出为67,不知道为什么??
            for   (int   i=0;i <cell.length;i++)
                cell[i]=sheet.getCell(i,   j);//获取第i列第j行数据
            //18-22     34     52
            float   cell18=Float.parseFloat(cell[18].getContents());
            float   cell19=Float.parseFloat(cell[19].getContents());
        float   cell20=Float.parseFloat(cell[20].getContents());
        float   cell21=Float.parseFloat(cell[21].getContents());
        float   cell22=Float.parseFloat(cell[22].getContents());
        float   cell34=Float.parseFloat(cell[34].getContents());
        float   cell52=Float.parseFloat(cell[52].getContents());
    System.out.println( "正在插入第 "+(j+1)+ "行数据...... ");  
            sql= "insert   into   biyes   values( ' "+cell[0].getContents()+ " ', ' "+cell[1].getContents()+ " ', ' "+cell[2].getContents()+