在asp.net的web应用系统中导出申请表等文档
在实际管理系统中,经常需要导出申请表,而这种申请表在系统投入使用之前就已经有。这是传统的doc文档。一般需求方都会提供这样的文档给开发团队,如何把信息导出成这样的一个标准的doc文档呢?
可以按以下的步骤走:
1. 用word打开doc文档,并另存为“筛选过的网页”,目的是得到对应这个申请表的html代码。
2. 用记事本打开这个html页面,并复制里边的代码。
3. 在系统中做一个这样的aspx页面,并把html的代码复制到里边。这时候,在Visual Studio设计视图中看到的就跟原来的doc文档基本一样。
4. 在相应要填数据的地方设置Label,并在后台代码文件的Page_load中把里边的数据初始化好。
5. 同样在Page_load中,在初始化代码的后边加入response的语句,把返回的信息流变为一个下载信息。
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.doc");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-word";//设置输出文件类型为word文件。
6. 这样一旦打开这个页面,就出现一个下载框,也就是填好数据的一个申请表。到此,基本导出工作就完成了。但是这个时候,页面会显示例如下边这样的不友好信息。
7. 要解决上述问题,可以改变导出的触发事件。简单说来就是在另外一个页面设置一个导出按钮,一点这个按钮就重定向到上边的页面。这样就只出现下载框而不会出现上边那个不友好信息了。
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("download.aspx");
}
8. 这样做有一个问题,就是保存的文件其实是一个html文件,不过后缀是doc而已。用offic2007打开后,修改保存的话,就会再文件旁边多一个文件夹,好像网页那样。如果用office2003就不会有这个情况。这个缺点,