将 Gridview 从 IIS 服务器上的 c# 应用程序导出到 ExcelSheet,到网络上的特定计算机

本文关键字:ExcelSheet 网络 计算机 应用程序 Gridview IIS 服务器 | 更新日期: 2023-09-27 18:34:13

我已经在服务器上托管了我的应用程序。任务是将网格视图从 IIS 服务器上的 c# 应用程序导出到 ExcelSheet 到网络上的特定计算机(不在用户的本地计算机上(。这是我使用的代码

System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
string renderedGridView = stringWrite.ToString();
File.WriteAllText(@"path of the server" + filename+ ".xls", renderedGridView);
Response.Write("<script>alert('File Successfully saved to server!')</script>");

当我在本地机器上运行这段代码时,它运行良好。它在指定位置创建 excel 文件。但是当我将相同的代码放在我的 IIS 服务器上并从服务器运行它时,该文件不会导出到任何地方。

我使用的服务器的路径是:

''Machine IPaddress'machine name'Folder'SubFolder'filename.xls

我可以在运行中使用上述路径访问此位置。此路径在我的本地计算机上运行良好。在 IIS 服务器上托管应用程序时是否需要更改路径?如果是,那么应该改变什么?

我应该怎么做才能让它工作?请帮忙。谢谢!

将 Gridview 从 IIS 服务器上的 c# 应用程序导出到 ExcelSheet,到网络上的特定计算机

试试这段代码

HttpResponse response = HttpContext.Current.Response;

            response.ContentType = "application/ms-excel";
   response.AddHeader("Content-Disposition", "inline;filename="+PathToServer +"ReportExport.xls");
   response.Write("<!DOCTYPE html PUBLIC " + Convert.ToChar(34) + "-//W3C//DTD XHTML 1.0 Transitional//EN" + Convert.ToChar(34) + " " + Convert.ToChar(34) +
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" + Convert.ToChar(34) + ">" + "'n" +
        "<html xmlns=" + Convert.ToChar(34) + "http://www.w3.org/1999/xhtml" + Convert.ToChar(34) + ">" + "'n" +
        "<head>"  + "'n"+
        "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"  +"'n"+
        "</head><body>");

            using (StringWriter sw = new StringWriter())
                {

                sw.Write(StrHeader); // put strHeader as table string
                    using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                    {
                        GridView1.RenderControl(htw);
                        response.Write(sw.ToString());
                        response.Flush();
                        response.End(); 
                    }
                }