我需要创建一个 HTML 表格并将其作为电子表格发送给用户。我在普通的旧 ASP.NET 中做过很多次,但它在 SharePoint 中让我落后了。这是一个简单的按钮,带有一个事件处理程序,它调用存储在模块中的 3 个文件(可访问沙盒解决方案),然后尝试将文本连同适当的内容类型和内容处置一起推送给用户。当我让这部分工作时, SampleData.txt 部分将被多个列表中的数据替换。不幸的是,该页面是回发的,但没有提供文件供用户打开或下载。
我在几个地方读到 Response.Write 在 Web 部件中不可用,但肯定还有其他方法可以完成这项任务......?这就是我想要做的 - 有没有可用的替代方案?
protected override void CreateChildControls()
{
Button ReportButton = new Button();
ReportButton.Text = "Generate DCPDS Report";
ReportButton.Click += new EventHandler(ReportButton_Click);
this.Controls.Add(ReportButton);
}
protected void ReportButton_Click(Object sender, EventArgs e)
{
string header = "";
string sampleData = "";
string footer = "";
using (SPWeb webRoot = SPContext.Current.Site.RootWeb)
{
header = webRoot.GetFileAsString("SpreadsheetParts/Header.txt");
sampleData = webRoot.GetFileAsString("SpreadsheetParts/SampleData.txt");
footer = webRoot.GetFileAsString("SpreadsheetParts/Footer.txt");
}
StringBuilder sb = new StringBuilder();
sb.Append(header);
sb.Append(sampleData);
sb.Append(footer);
Page.Response.Clear();
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=June2010Spreadsheet.xls");
HttpContext.Current.Response.Write(sb.ToString());
//HttpContext.Current.Response.End();
}