从sql datareader从vb.net导出到excel

从sql datareader从vb.net导出到excel,vb.net,excel,export,Vb.net,Excel,Export,我有一个使用sql datareader的sql查询。我为数据读取器设置了一个for循环。现在,当数据开始从查询中输入时,我希望它在for循环中导出到excel。 这是我的密码 试一试 Dim SqlStr As String=“”,dr As SqlDataReader=无 ConnectDB(Cnn) Str = "query" SqlCmd = New SqlCommand(Str, Cnn) dr = SqlCmd.Exec

我有一个使用sql datareader的sql查询。我为数据读取器设置了一个for循环。现在,当数据开始从查询中输入时,我希望它在for循环中导出到excel。 这是我的密码

试一试 Dim SqlStr As String=“”,dr As SqlDataReader=无

        ConnectDB(Cnn)
        Str = "query"
        SqlCmd = New SqlCommand(Str, Cnn)
        dr = SqlCmd.ExecuteReader

while dr.read
..EXPORT TO EXCEL
do
end while

有人知道怎么做吗?

此示例将把整个网格内容呈现到Excel文件中

private void _Click(object sender, System.EventArgs e)
{
//export to excel
Response.Clear();
    Response.Buffer= true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";
    this.EnableViewState = false;
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = 
        new System.Web.UI.HtmlTextWriter(oStringWriter);
    this.ClearControls(dg);
    dg.RenderControl(oHtmlTextWriter);
    Response.Write(oStringWriter.ToString()); 
    Response.End();
}

我读过关于在CodeProject上将数据集保存到excel的内容。你可以参考那篇文章:


或者

您可以使用多种方法

  • 决定是否要在服务器上创建可在超链接中引用的文件

  • 将响应实时流式传输到客户端,设置mime类型,以便在excel中加载响应

  • 对于这两种方法,您都需要创建一个Excel将打开的输出。这里有一些选项:

  • 您可以使用电子表格xml。这是旧版Excel可以打开的xml格式
  • 您可以将html写入文件,并使用.xls扩展名重命名它/将html写入响应流,并将mime类型设置为excel
  • 使用OOXML创建xlsx文件。从Office 2000开始,所有版本的Excel都可以打开此文件(客户端可能需要下载免费更新以启用此功能)。OOXML非常复杂,因此我建议使用一个免费的库,例如。您还可以从该链接下载ooxmlsdk
  • 有关将xlsl文档写入响应流的信息,请参阅我的博客文章