tempad
Readygo技术搜索引擎 >>游戏开发 >> 关于把excel的数据逐条读入到数据库中问题

关于把excel的数据逐条读入到数据库中问题

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 1:59:42

关于把excel的数据逐条读入到数据库中问题

楼主muggle(旅鸥)2004-03-25 14:17:12 在 Java / J2EE / EJB / JMS 提问

大家帮我看看把   ,我想把excel的数据逐条读入到数据库中去,不过读的   时候是按列读的,比如先读出第一列字段的值,再读第二列。而写到数据库时,是按行写的,比如是一条纪录一条纪录读的。请问我怎么写这个循环啊?还有把excel单元格的值,保存到一个变量后,我怎么传递这个变量到insert语句中去了啊?很急啊,各位高手帮我看看把。  
   
   
   
  package   myprojects.poiexample;  
  import   javax.sql.*;  
  import   java.io.IOException;  
  import   java.io.*;  
  import   org.apache.poi.poifs.filesystem.*;  
  import   org.apache.poi.poifs.filesystem.POIFSFileSystem;  
  import   org.apache.poi.hssf.usermodel.HSSFCell;  
  import   org.apache.poi.hssf.usermodel.HSSFSheet;  
  import   org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  import   org.apache.poi.hssf.usermodel.HSSFRow;  
  import   java.sql.*;  
  public   class   POIExample   {  
   
          public   static   void   main(   String   []   args   )   {  
                  try{  
           
                            //   打开存在的EXCEL文件  
                      POIFSFileSystem   fs   =  
                                  new   POIFSFileSystem(   new   FileInputStream(   "d:\\workbook.xls"   )   );  
                          HSSFWorkbook   workbook   =   new   HSSFWorkbook(   fs   );  
                           
                          //   得到sheet  
                          HSSFSheet   sheet   =   workbook.getSheetAt(   0   );  
                     
          int   allRec=sheet.getLastRowNum();  
          //System.out.println(+allRec+"");  
          for(int   i=0;i<=allRec;i++)  
          {  
              String   providerCode="";  
              String   areaName="";  
              String   province="";  
              String   branch="";  
              String   cityCode="";  
   
              String   custName="";  
              String   serviceName="";  
              String   connPlace="";  
              String   tariffType="";  
              int   amount=0;  
   
              //String   temp="";  
              HSSFRow   row   =   sheet.getRow(i);  
              //out.print("row   "+i+":         ");  
              for(int   j=0;j<=row.getLastCellNum()-3;j++)  
              {  
    switch(j)  
    {  
          case   0:  
           
              providerCode=row.getCell((short)j).getStringCellValue();  
              //temp=providerCode;  
      System.out.println(providerCode);  
              break;  
          case   1:  
              areaName=row.getCell((short)j).getStringCellValue();  
              //temp=areaName;  
                //System.out.println(areaName+"");  
              break;  
          case   2:  
              province=row.getCell((short)j).getStringCellValue();  
              //temp=province;  
                //System.out.println(province+"");  
              break;  
          case   3:  
              branch=row.getCell((short)j).getStringCellValue();  
              //temp=branch;  
              break;  
          case   4:  
              cityCode=row.getCell((short)j).getStringCellValue();  
              //temp=cityCode;  
              break;  
          case   5:  
              custName=row.getCell((short)j).getStringCellValue();  
              //temp=custName;  
              break;  
          case   6:  
              serviceName=row.getCell((short)j).getStringCellValue();  
              //temp=serviceName;  
              break;  
          case   7:  
              connPlace=row.getCell((short)j).getStringCellValue();  
              //temp=connPlace;  
              break;  
          case   8:  
              tariffType=row.getCell((short)j).getStringCellValue();  
              //temp=tariffType;  
              break;  
          case   9:  
              String   cellStr1=Double.toString(row.getCell((short)j).getNumericCellValue());  
              Integer   k=new   Integer(cellStr1.substring(0,cellStr1.indexOf(".")));  
              amount=k.intValue();  
              //temp=k.toString()+"\n\r";  
              break;  
  }  
  //out.print(temp);  
              }  
               
                          }    
                  Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
        String   url="jdbc:oracle:thin:@192.168.8.16:1521:oa";  
          String   user="system";  
          String   pass="chinasky";  
          Connection   con=DriverManager.getConnection(url,user,pass);  
           
                                      Statement   stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);      
                      ??????     //String   sql="insert   into   scott.yyzx   values(providerCode,areaName,province,branch,cityCode,custName,serviceName,connPlace,tariffType,amount)";  
                    stmt.execute("insert   into   scott.yyzx   values(providerCode)");  
                    ResultSet   rs=stmt.executeQuery("select   *   from   scott.yyzx");  
                    while(rs.next())   System.out.println("providerCode"+""+rs.getString(1));  
                    rs.close();  
                    stmt.close();  
                    con.close();  
   
             
                   
                  }   catch   (   Exception   e   )   {  
                          e.printStackTrace();  
                          new   POIExample();  
                  }  
          }  
           
  }  
   
  问题点数:0、回复次数:7Top

1 楼bibiye(布什的老哥)回复于 2004-03-25 15:36:12 得分 0

我也正在做,  
  完成后与你共享。Top

2 楼leleli(侯鸟)回复于 2004-03-25 16:42:33 得分 0

推荐一个第三方的东东:  
  http://www.andykhan.com/jexcelapi/Top

3 楼bibiye(布什的老哥)回复于 2004-03-25 16:51:22 得分 0

我已经解决了  
  确实http://www.andykhan.com/jexcelapi/对中文支持较好  
   
  我也是用andykhan  
   
  给你个思路:  
   
  for(excel的行循环){  
        for(excel的列循环){  
                  把记录赋给一个数组array  
        }  
        取出array,insert到对应的表里  
  }  
   
  Top

4 楼totodo(土豆仙)回复于 2004-03-25 18:24:44 得分 0

调式一下看看哪里出错了。Top

5 楼mbl(小马)回复于 2004-03-25 18:54:59 得分 0

upTop

6 楼muggle(旅鸥)回复于 2004-03-26 14:44:00 得分 0

今天调试了一下,解决了这个问题,不过又有新的问题了,我试验的excel表的记录是有规律的,一条一条的记录读是没有问题,不过的有的表的一些记录属于一个小系列,比如带?的一行,请问这个问题怎么解决啊。  
   
  18 马克思主义当代思潮与发展走向             杨 悦 讲 师  
  19 当代世界伦理思潮与中国的道德重建             郑 婷 助 教  
  20 政府公信力的建立                                                   郑 婷 助 教  
                                                                                    教研部:       科社 ??  
  21 从列宁的“政治遗嘱”到邓小平“政治交代         袁秉达 教 授  
  22 对苏联演变的历史追思——《莫斯科日记》         袁秉达 教 授  
  23 中国能崛起吗?                                                 王耀东 副教授  
  Top

7 楼snail2004(蜗牛2004)回复于 2004-03-26 16:17:35 得分 0

to:muggle(旅鸥)    
  请先结贴,重新发贴问第二个问题!  
  请尊重他人的劳动!!!  
  Top

责任编辑: efish 参与评论 查找更多:
相关文章
新装了VFP7。0,不过初看界面似乎有点失望,记得以前… 新装了VFP7。0,不过初看界面似乎有点失望,记得以前(小魏2002 xiaowei_2002)
在jbuilder里运行程序时,总是弹出一个界面(run),那是… 在jbuilder里运行程序时,总是弹出一个界面(run),那是怎么回事?请教!!
有没有了解东软电子商务部的啊 有没有了解东软电子商务部的啊
CListCtrl中如何知道当前选择已改变? CListCtrl中如何知道当前选择已改变?
再问在PB中终止其他进程的方法 再问在PB中终止其他进程的方法
这是什么错误:“中文窗体名称”is not a valid com… 这是什么错误:“中文窗体名称”is not a valid component name?
水源EA马甲联盟---灌水放分许可! 放分之第900分! 水源EA马甲联盟---灌水放分许可! 放分之第900分!
程序运行过程中,如何动态隐藏对话框的标题栏??指教 程序运行过程中,如何动态隐藏对话框的标题栏??指教
用ghost做的磁盘分区的镜象在还原时是不是连数据原先… 用ghost做的磁盘分区的镜象在还原时是不是连数据原先所在的磁盘块也保持不变?完完全全的相同,不仅是内容上,连数据的存储地址上?
大家好!我是牛仔! 大家好!我是牛仔!
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎