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();
}