Запись файла csv в asp.net

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

    DataView priceQuery = (DataView)context.Session["priceQuery"];
    String fundName = priceQuery.Table.Rows[0][0].ToString().Trim().Replace(' ', '_');

    context.Response.Clear();
    context.Response.ClearContent();
    context.Response.ClearHeaders();

    context.Response.ContentType = "text/csv";
    context.Response.ContentEncoding = System.Text.Encoding.Unicode;        
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");
    context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());                

    String output = fundName + "\n";        
    output += "Price, Date" + "\n";

    foreach (DataRow row in priceQuery.Table.Rows)
    {
        string price = row[2].ToString();
        string date = ((DateTime)row[1]).ToString("dd-MMM-yy");

        output += price + "," + date + "\n";
    }

    context.Response.Write(output);

person Keith    schedule 15.02.2011    source источник
comment
Я знаю, что это не является частью вашего вопроса, но вы не должны использовать output += price +... вместо этого используйте объект StringBuilder. Каждый раз, когда вы объединяете такую ​​строку, вся новая строка перераспределяется. Помните, что строки в C# являются неизменяемыми объектами.   -  person Brettski    schedule 15.02.2011
comment
Любая обратная связь приветствуется. приму к сведению и изменю соответственно   -  person Keith    schedule 15.02.2011


Ответы (1)


Похоже, MS Office не поддерживает CSV-файлы Unicode.

Но некоторые пользователи сообщили, что разделитель табуляции работает.

Я бы попробовал UTF-8, а не Unicode, это может привести к тому, что разделители будут рассматриваться как символы ASCII.

person Artem Koshelev    schedule 15.02.2011