在asp.net中怎么使用ado.net连接excel数据源?
怎么把数据库中的数据导如excel啊(用ado.net)?
望高手指点

解决方案 »

  1.   

    1、可以先建立ODBC,再用ado.net连接。
    2、利用SQL-SEVER 中的功能。
    选择指定Excel文件中的数据
    SELECT * FROM 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’,’Excel 5.0;HDR=YES;DATABASE=c:\test.xls’,sheet1$)
    将数据导入到指定的Excel文件中
    1)如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
    INSERT INTO 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’,’Excel 5.0;HDR=YES;DATABASE=c:\test.xls’,sheet1$)
    SELECT * FROM 表
    2)如果Excel文件不存在,也可以用BCP来导出并生成Excel的文件,注意大小写:
    1)导出表
    EXEC master..xp_cmdshell
    ’bcp
    数据库名.dbo.表名
    out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"’
    2)导出查询
    EXEC master..xp_cmdshell
    ’bcp
    "SELECT au_fname,au_lname FROM pubs..authors ORDER BY au_lname"
    queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"’
      

  2.   

    不知道能不能解决你的问题:
    http://community.csdn.net/Expert/topic/4278/4278743.xml?temp=.6340296
      

  3.   

    <% @Import Namespace="System.Data" %>
    <% @Import Namespace="System.Data.OleDb" %>
    <HTML>
    <HEAD>
    <title>如何读取Excel表格中的数据</title>
    <script language="C#" runat="server">

    void SubmitBtn_Click(object sender, System.EventArgs e)
    {
    // 获取Excep文件的完整路径
    string source = File1.Value; string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
    string query = "SELECT * FROM [Sheet1$]"; OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
    OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
    DataSet myDataSet = new DataSet(); // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
    oleAdapter.Fill(myDataSet, "[Sheet1$]"); // 数据绑定
    DataGrid1.DataSource = myDataSet;
    DataGrid1.DataMember = "[Sheet1$]";
    DataGrid1.DataBind();
    }

    </script>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <H3>如何读取Excel表格中的数据</H3>
    请选择Excel表格:<BR>
    <INPUT type="file" id="File1" name="File1" runat="server" size="26"><br>
    <asp:Button 
    id="SubmitBtn" 
    runat="server" 
    Text="开始显示" 
    OnClick="SubmitBtn_Click">
    </asp:Button><br>
    <br>
    <asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>
    </form>
    </body>
    </HTML>
      

  4.   

    http://bbs.aspcool.com/ShowThread.aspx?PostID=21829
      

  5.   

    http://www.cnblogs.com/renyu732/archive/2005/06/15/174866.html
      

  6.   

    OleDB ,Jet引擎别外直接用COM操作VBAwww.webmis.com.cn
    下的打印操作Excel
      

  7.   

    就把EXCEL当作数据库就可以了:string strConn="Provider=Microsoft.Jet.OleDb.4.0;data source=c:\YourExcelFileName.xls;Extended Properties=Excel 10.0;"; 
    //连接字符串的10.0可根据你的EXCEL版本,修改为11.0或9.0等,我忘记具体是几点零了
    OleDbConnection con=new OleDbConnection(strConn);
    con.Open();
    DataTable tbltemp = new DataTable;
    OleDbDataAdapter ada=new OleDbDataAdapter("select * From [Sheet1$]",con);
    ada.Fill(tbltemp);
    //到此,Excel文件中的内容已经填充到datatable中了
    //默认状态,EXCEL文件的第一行被当作列名称了
      

  8.   

    /*******  导出到excel
    EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/***********  导入Excel
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
      

  9.   

    //DataSet -〉 Excel
    public void CreateExcel(DataSet ds,string typeid,string FileName) 
    {
      HttpResponse resp;
      resp = Page.Response;
      resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");//utf-8  if (typeid=="1")
        resp.AppendHeader("Content-Disposition", "attachment;filename=filename.xls");// + FileName);   
      else
        resp.AppendHeader("Content-Disposition", "attachment;filename=filename.xml");// + FileName);     Response.ContentType = "application/ms-excel";
      string colHeaders= "", ls_item="";
      int i=0;  //定义表对象与行对像,同时用DataSet对其值进行初始化
      DataTable dt=ds.Tables[0];
      DataRow[] myRow=dt.Select("");   // typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
      if(typeid=="1")
      {
        //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
        for(i=0;i<dt.Columns.Count;i++)
        {
          colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
        }   
        colHeaders+="\n";    //向HTTP输出流中写入取得的数据信息
        resp.Write(colHeaders); 
        //逐行处理数据  
        foreach(DataRow row in myRow)
        {
          //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
          for(i=0;i<row.ItemArray.Length-1;i++)
          {
            ls_item +=row[i].ToString() + "\t";
          }     
          ls_item += row[i].ToString() +"\n";
          //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据    
          resp.Write(ls_item);
          ls_item="";
        }
      }
      else
      {
        if(typeid=="2")
        { 
          //从DataSet中直接导出XML数据并且写到HTTP输出流中
          resp.Write(ds.GetXml());
        }    
      }  if (ds.Tables.Count>0)
        ds.Tables.Remove(ds.Tables[0]);  //写缓冲区中的数据到HTTP头文件中
      resp.End();
    }