职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 2838|回复: 0

我的excel旅程之一--一个excel文件包含多个不同sheet表导入

[复制链接]
蓝色梦幻 发表于 2007-10-16 16:26 | 显示全部楼层 |阅读模式
说老实话导入导出excel已经是个很古老的话题,好象是不太新意的了,但现在我真的在它的身上花费了我三天的时间。
第一讲:excel的一个文件多个sheet表的导入,无模板,换句话说就是空模板,建立一个空excel。
这个excel的应用,
我的程序主要是在vs2003的环境下做的:
private void Button1_ServerClick(object sender, System.EventArgs e)//取值
    {
      string ExeclFile=\"\";
      Object  oMissing =System.Reflection.Missing.Value  ; //这是excel特有的类型
      Excel.Application objExcelApp=new Excel.Application();
      
      ExeclFile=Server .MapPath(\"../upload_temp/test0925.xls\");//要连接的excel文件
      Excel.Application excel =new  Excel.ApplicationClass();  
      Excel.Workbook work =excel.Application.Workbooks.Open(ExeclFile,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);  //打开当前excel文件
      string name1=\"\";  
      foreach(Excel.Worksheet ws in work.Worksheets)  //取出不同sheet表的名称
      {  
       name1+=ws.Name+\",\";  
      }  
      
      //调运函数插入数据库
      string[] names=name1.Split(',');
      DataSet ds=new DataSet();
      string insertstr0=\"insert into yang_test1(testid1,testname1)values(@testid1,@testname1)\";
      string insertstr1=\"insert into yang_test2(testid2,testname2)values(@testid2,@testname2)\";
      //string insertstr2=\"insert into yang_test3(testid3,testname3,testage3)values(@testid3,@testname3,@testage3)\";
      string insertstr2=\"insert into yang_test3(testid3,testname3)values(@testid3,@testname3)\";
      bool ifis=false;
      for(int ii=0;ii<names.Length;ii++)
      {
        //[Sheet1$]
        if(names[ii]!=\"\"){names[ii]=\"[\"+names[ii]+\"$]\";ds=conExcel(ExeclFile,names[ii]);}
        if(ds!=null)
        {
          if(ii==0){ifis=ifexceltosql1(ds,insertstr0);Response .Write (\"ok1\");}
          if(ii==1){ifis=ifexceltosql2(ds,insertstr1);Response .Write (\"ok2\");}
          if(ii==2){ifis=ifexceltosql3(ds,insertstr2);Response .Write (\"ok3\");}
          if(ifis==false)return;
        }
      }
      objExcelApp.Quit() ;
      
    }
public DataSet conExcel(string fpath,string name1)//取到excel某表的值
{
      string strConn = \"rovider=Microsoft.Jet.OLEDB.4.0;Data Source=&#39;\"+fpath+\"&#39;;\"
        +\"Extended Properties=Excel 8.0;\";
      try
      {
        using (OleDbDataAdapter command = new OleDbDataAdapter(\"SELECT * FROM \"+name1+\"\", strConn))
        {
          using (DataSet dataSet1 = new DataSet())
          {
            command.Fill(dataSet1);
            return dataSet1;
          }
        }
      }
      catch(Exception xx)
      {
        Response .Write (xx);
        return null;
      }
    }
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-15 16:08 , Processed in 0.127204 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表