Создайте загрузку CSV, используя silverlight 4 и c # - PullRequest
6 голосов
/ 18 февраля 2011

Я изо всех сил пытаюсь найти пример или код, чтобы иметь возможность создать CSV или текстовый файл в Silverlight в качестве загружаемой ссылки.

Я сделал это в ASP.net, но не могу понять, как использовать Silverlight.Я вращаю свои колеса?Или мне просто создать страницу ASP?Есть ли способ сделать это в C #?

Я бы хотел сделать это правильно, а не взламывать работу, и буду признателен за любые отзывы и советы.

В ASP я бы использовал:

Response.ContentType = "text/csv"
Response.AddHeader "Content-disposition", "attachment;filename=""EPIC0B00.CSV"""
Response.write....

Ответы [ 2 ]

6 голосов
/ 18 февраля 2011

Мне удалось решить с очень похожим кодом, как указано выше, просто включив необходимые ссылки, чтобы не делать никаких предположений, плюс это фактический рабочий пример.

using System;  
using System.IO;
using System.Windows;  
using System.Windows.Controls;
....

    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        string data = ExportData(); // This is where the data is built
        SaveFileDialog sfd = new SaveFileDialog()
        {
        DefaultExt = "csv",
        Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*",
        FilterIndex = 1
        };
        if (sfd.ShowDialog() == true)
        {
            using (Stream stream = sfd.OpenFile())
            {
                using (StreamWriter writer = new StreamWriter(stream)) {
                writer.Write(data);  //Write the data :)
                writer.Close();
                }
                stream.Close();
             }
        }
    }

    private string ExportData()
    {
       return "!this is the exported text";
    }
1 голос
/ 18 февраля 2011

Silverlight - это технология на стороне клиента. Вы не можете указать на него браузер и «загрузить» CSV или что-то еще из него.

Вместо этого вы используете класс SaveFileDialog. Вот фрагмент кода, основанный на документах MSDN: -

SaveFileDialog csvDialog;
public Page()
{
    InitializeComponent();
    csvDialog= new SaveFileDialog();
    csvDialog.Filter = "CSV Files| *.csv";
    csvDialog.DefaultExt = "csv";
 }

private void button1_Click(object sender, RoutedEventArgs e)
{
    bool? result = csvDialog.ShowDialog();
    if (result == true)
    {
        System.IO.Stream fileStream = csvDialog.OpenFile();
        System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream);

        // Call a method to write your CSV content to the sw here

        sw.Flush();
        sw.Close();
    }
}
...