Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-使用数据库中的数据写入新word文档并立即下载_C#_Asp.net - Fatal编程技术网

C#-使用数据库中的数据写入新word文档并立即下载

C#-使用数据库中的数据写入新word文档并立即下载,c#,asp.net,C#,Asp.net,我试图创建word文档,其中每个文档都包含从SQL数据库提取的数据(每行填充一个文档)。在这之后,HTML中应该有一个按钮,单击该按钮可以一次性下载所有这些文件 我已经编写了代码(如下),但只有数据库的第一行被写入文件并下载。我不知道其余的记录要去哪里,也不知道为什么它们没有和第一个一起下载,即使它们是循环的 代码如下: ... OdbcDataReader dl = dbCommand.ExecuteReader(); while (dl.Read()) { DataTable dt =

我试图创建word文档,其中每个文档都包含从SQL数据库提取的数据(每行填充一个文档)。在这之后,HTML中应该有一个按钮,单击该按钮可以一次性下载所有这些文件

我已经编写了代码(如下),但只有数据库的第一行被写入文件并下载。我不知道其余的记录要去哪里,也不知道为什么它们没有和第一个一起下载,即使它们是循环的

代码如下:

...
OdbcDataReader dl = dbCommand.ExecuteReader();
while (dl.Read())
{
  DataTable dt = new DataTable();
  string id = dl["application_id"].ToString();
  dt.Columns.Add("Id");
  dt.Columns.Add("Year");
  dt.Columns.Add("Season");
  dt.Columns.Add("Awarded Amount");
  dt.Rows.Add(id, GlobalMethods.proposalYear(), GlobalMethods.proposalSeason(),dl["awarded_amount"].ToString());

  dld(id, dt);
}
...

 protected void dld(string id, DataTable dt)
{
    //Create a dummy GridView
    GridView GridView1 = new GridView();
    GridView1.AllowPaging = false;
    GridView1.DataSource = dt;
    GridView1.DataBind();
    Response.Clear();
    Response.Buffer = true;
    string fileName = "Proposal_" + id;
    Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".doc");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-word ";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.RenderControl(hw);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
}

我3天前才开始与C#合作,因此我们将非常感谢您的帮助。谢谢你

您尚未创建Word文档。您已经创建了一个HTML文件,然后为其提供Word文件扩展名和MIME类型。这是个坏主意。不仅您对演示文稿的控制有限,桌面Microsoft Word还会抱怨文件被破坏,许多其他Word客户端也会完全被文件阻塞。不要做一个傻子。相反,使用一个库来生成一个真正的Word文档,比如.Hi,生成一个Word文档要比设置内容类型然后向其中上载一些网格数据稍微多一些,但是您在中已经做了3天了。大多数人倾向于使用某种报告附加组件来帮助输出word或pdf文档,如SSRS(SQLServer附带的报告服务)。在跳转到Word文档之前,你可能想考虑先输出一个简单的文件格式,比如一个文本文件。谢谢你,梅森,我去看看图书馆。但是出于好奇,你知道为什么这些文件没有一个一个下载下来吗?我解决这个问题已经有一段时间了,所以澄清一下会有帮助。“为什么文件没有一个接一个地下载?”-对于HTML请求,您只得到一个响应..谢谢@stuartd