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