首先取得datagrid的数据源dataset,然后看下面
http://www.xmlforasp.net/codeSection.aspx?csID=64

解决方案 »

  1.   

    我用过的一个例子:
    Sub ExportExcelRecordset(Adorecordset As Recordset)
    On Error GoTo err_handle
    Dim excelsheet As Object
    MDImain.StatusBar1.Panels(1).Text = "正在启动EXCEL,请稍侯...."
    Set excelsheet = CreateObject("excel.application")
    excelsheet.Workbooks.Add
    excelsheet.Visible = True
    Adorecordset.MoveFirst
    Dim rows As Long, cols As Long
    Dim Row As Long, Col As Long
    rows = Adorecordset.RecordCount
    cols = Adorecordset.Fields.Count
    For Col = 0 To cols - 1
        excelsheet.Cells(1, Col + 1).Value = Adorecordset.Fields(Col).name
    Next
    For Row = 2 To rows + 1
        For Col = 0 To cols - 1
            excelsheet.Cells(Row, Col + 1).Value = IIf(IsNull(Adorecordset.Fields(Col).Value), "", Adorecordset.Fields(Col).Value)
        Next
        Adorecordset.MoveNext
    NextMDImain.StatusBar1.Panels(1).Text = "就绪"
    Exit Sub
    Screen.MousePointer = 0
    Exit Suberr_handle:
       If err.Number = 1004 Then
          MsgBox "因Excel被用户关闭而中断输出!", vbInformation
       Else
          Resume Next
       End If
       Screen.MousePointer = 0
    End Sub
      

  2.   

    不好意思,投错稿了,才发现这里是.net技术区,我那代码是vb写的.i 'm sorry.
      

  3.   

    由于我不能删除隐藏了的列,还需要重新显示它们,但如果通过数据表来操作它,确是将表中所有的内容都导出了,而我的目的却是只将当前DataGrid中显示的列导出,而不包含隐藏的列
      

  4.   

    JacksonH(傲清风) ,你可以将这个DataTable复制一份,用DataTable.Copy();
    然后将复制后的DataTable中的相关列(需要隐藏的)删除,然后再导出。
      

  5.   

    供您参考!
    public object oDataSourse;
    public object[] oDataRow = new object [100] ;
    public int i;
    string sConn = "server=HEHE; uid=sa; pwd=; database=bookstore";
    string sComm = "SELECT * FROM book_detail";
    SqlDataAdapter DataAdapter =new SqlDataAdapter(sComm,sConn);
    DataSet ds = new DataSet (); 
    DataAdapter.Fill(ds,"book_detail");
       
    oDataSourse = ds.Tables [0].DefaultView ;DataTable dt = ds.Tables [0];

    for(i = 0 ;i <=9 ;i++)
    {
    oDataRow[i] = dt.Rows[0][i];//第0行任意列!
    }
      

  6.   

    呵呵,雨佳,谢谢你提供了这条思路,我也想过,但是考虑到这样会引起不必要的内存开销,如果有相当多的数据,这样会产生性能瓶颈,所以没敢用,不过我们的思路还是不谋而合了:)晓:对不起,我没怎么看明白你这段代码的意图,不好意思。我现在只能控制DataGrid的样式,最大的障碍是不能将标题列的属性对应到数据表的行中,理论上应该是可以对应起来进行循环操作,不导出隐藏列,可我却找不到方法,所以希望大家能够共同思考帮我把这个问题解决掉!
      

  7.   

    直接用前端脚本,将DataGrid控件作为一个Table来看待,就可导出到excel了
      

  8.   

    datagrid和excel的源使用同一个datatable.实现两个同时更新,起到的效果是一样的.
      

  9.   

    You refer to "http://www.dotnet247.com/247reference/msgs/26/132455.aspx"!
    Maybe help you!