且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将数据库从Gridview导出到Excel

更新时间:2023-01-21 19:14:19

请参考以下主题:



进出口Excel [ ^ ]

从ASP.Net GridView直接Excel导出 [ ^ ]

从C#.Net中的数据表导出到EXCEL [ ^ ]

^ ]

从网格导出大量数据使用C#查看和Datareader到Excel文件[ ^ ]



将数据导出到Excel文件 [ ^ ]

以5种格式导出报告 [ ^ ] b $ b

C#Excel教程 [ ^ ]



查看类似讨论:

使用C#在一个卷中将数据导出到Excel [ ^ ]


在这里发布您的aspx代码。

看起来内部缺少runat = server< asp:gridview xmlns:asp =#unknown &GT;标签。添加它。


尝试这个,我认为它的工作原理



你将你的datagrid值绑定到xlDV,你可以访问像这个,





 Dim dt As New DataTable 
dt = xlDV.ToTable
'从数据库获取数据到datatable
Response.Clear()
Response.Buffer = True
Response.AddHeader(content-disposition,attachment; filename = ExpData.csv)

Response.Charset =
Response.ContentType =application / text
Dim sb As New StringBuilder()
for k As Integer = 0 To dt .Columns.Count - 1
'添加分隔符
sb.Append(dt.Columns(k).ColumnName +,c)
Next
'追加新行
sb.Append(vbCr& vbLf)



For each resultDR As DataRow in dt.Rows
For Each resultDC As DataColumn in dt.Columns
Dim strTemp As String = resultDR.Item(resultDC.ColumnName).ToString()
如果strTemp.Contains(System.Environment.NewLine)= True那么
strTemp = strTemp.Replace(System.Environment.NewLine ,)
结束如果
'添加分隔符
sb.Append(strTemp.Replace(,,;)+,c)
下一个
'追加新行
sb.Append(vbCr& vbLf)
下一个






Response.Output.Write(sb.ToString())
Response.Flush()
Response.End()





谢谢,

jeyamothi


I tested a below code to export database from Gridview to Excel,but error
"Control 'gvInHoaDon' of type 'GridView' must be placed inside a form tag with runat=server"

private void InHoaDonDuocChon(GridView gvInHoaDon)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition",
         "attachment;filename=HoaDon.xls");
        Response.Charset = "";
        Response.ContentType = "application/ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        
        gvInHoaDon.AllowPaging = false;
        gvInHoaDon.DataBind();
        gvInHoaDon.RenderControl(hw);
        //Thay đổi Style
        string style = @"<style> .textmode { mso-number-format:\@; } </style>";
        Response.Write(style);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }


I referenced 2 ways: http://www.codedigest.com/Articles/ASPNET/130_Export_to_Excel_in_ASPNet_20_-Gridview_to_Excel_DataTable_to_Excel.aspx[^]
but error "Control 'gvInHoaDon' of type 'GridView' must be placed inside a form tag with runat=server"
Please help me.
Many thanks.

Please refer following threads:

Import and Export Excel [^]
Direct Excel Export from ASP.Net GridView[^]
Export to EXCEL from Datatable in C#.Net[^]
Export to Excel from GridView in C#[^]
Export large data from Gridview and Datareader to an Excel file using C#[^]

Export Data to Excel file[^]
Export Report in 5 Formats[^]

C# Excel Tutorial[^]

Check similar discussion:
Export Data to Excel Using C# in One Colume[^]


Post your aspx code here.
It looks like runat=server is missing inside <asp:gridview xmlns:asp="#unknown"> tag. Add that.


Try this, i think its working

you bind your datagrid value into xlDV and you can access code like this,


Dim dt As New DataTable
        dt = xlDV.ToTable
        'Get the data from database into datatable
        Response.Clear()
        Response.Buffer = True
        Response.AddHeader("content-disposition", "attachment;filename=ExpData.csv")

        Response.Charset = ""
        Response.ContentType = "application/text"
        Dim sb As New StringBuilder()
        For k As Integer = 0 To dt.Columns.Count - 1
            'add separator
            sb.Append(dt.Columns(k).ColumnName + ","c)
        Next
        'append new line
        sb.Append(vbCr & vbLf)



        For Each resultDR As DataRow In dt.Rows
            For Each resultDC As DataColumn In dt.Columns
                Dim strTemp As String = resultDR.Item(resultDC.ColumnName).ToString()
                If strTemp.Contains(System.Environment.NewLine) = True Then
                    strTemp = strTemp.Replace(System.Environment.NewLine, " ")
                End If
                'add separator
                sb.Append(strTemp.Replace(",", ";") + ","c)
            Next
            'append new line
            sb.Append(vbCr & vbLf)
        Next






        Response.Output.Write(sb.ToString())
        Response.Flush()
        Response.End()



Thanks,
jeyamothi