2017-11-13 3 views
0

SitecoreリダイレクトリンクをCSVファイルにエクスポートします。リボンで作成したボタン、およびプロジェクトのコードreferendページ。Sitecore 7.2ブラウザへのcsvへのリンク

public class ExportRedirectsListCmd : Command 
{ 
    public override void Execute(CommandContext context) 
    { 
     var RedirectFolder = new SitecoreContext(GetContentDatabase()).GetItem<BaseCommon>(context.Items[0].ID.ToGuid(), context.Items[0].Language); 
     var lstLinkToRedirect = RedirectFolder.Children.OfType<LinkToLinkRedirect>(); 
     var filename = "RedirectsOutput_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; 
     var sb = new StringBuilder(); 
     sb.AppendLine($"{"Redirecttype"},{"Sourcelink Url"}, {"Targetlink Url"}"); 
     // collect all information 
     var allLines = (from item in lstLinkToRedirect 
         select new object[] 
         { 
          item.RedirectType, 
          item.SourceLink.Url, 
          item.TargetLink.Url 
         }).ToList(); 

     // insert the content 
     allLines.ForEach(line => 
     { 
      sb.AppendLine(string.Join(",", line)); 
     }); 

     // Alertbox just for test 
     // SheerResponse.Alert(sb.ToString()); 
     // return;  
    } 
} 

コードStringBuilder内のすべての情報を収集する(下記参照)。アラートボックスをテストすることにより、予想される情報が表示されます。

今すぐStringBuilder情報をブラウザにダウンロードしてください。 HttpContextはSitecoreでは動作しません。

答えて

0

あなたが、私はこれをテストしていませんその後、CSVファイルをダウンロードするSheerResponse.Download() APIを使用して一時フォルダにファイルを保存する必要があるが、これは何が必要でしょうです:

public override void Execute(CommandContext context) 
    { 
     var RedirectFolder = new SitecoreContext(GetContentDatabase()).GetItem<BaseCommon>(context.Items[0].ID.ToGuid(), context.Items[0].Language); 
     var lstLinkToRedirect = RedirectFolder.Children.OfType<LinkToLinkRedirect>(); 
     var filename = "RedirectsOutput_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; 
     var sb = new StringBuilder(); 
     sb.AppendLine($"{"Redirecttype"},{"Sourcelink Url"}, {"Targetlink Url"}"); 
     // collect all information 
     var allLines = (from item in lstLinkToRedirect 
         select new object[] 
         { 
              item.RedirectType, 
              item.SourceLink.Url, 
              item.TargetLink.Url 
         }).ToList(); 

     // insert the content 
     allLines.ForEach(line => 
     { 
      sb.AppendLine(string.Join(",", line)); 
     }); 
     string filePath = "/temp/" + filename; 
     using(TextWriter tw = new StreamWriter(filePath)) 
     { 
      tw.WriteLine(sb.ToString()); 
      tw.Close(); 
     } 
     SheerResponse.Download(filePath); 
    } 
+0

感謝をあなたの答えはあなたです。それは私のためには機能しませんでしたが、その解決策は同僚によって発見されました。私はhttps://sitecore.stackexchange.com/questions/8473/links-to-csv-download-in-the-browser/8515#8515に載せます – Dinand

関連する問題