2008-11-14 1 views
1

Есть ли что-нибудь, что мы можем сделать либо в коде (ASP/JavaScript), либо в Excel, поэтому что значения, разделенные запятыми, заканчиваются отдельными столбцами в Excel?Экспорт файла Unicode CSV (разделенный запятой) в Excel 2003 или Excel 2007 приводит к тому, что все столбцы заканчиваются в первом столбце в Excel

ответ

0

Если вы откроете файл через меню «Файл -> Открыть» в Excel, он будет разделять значения в ячейках.

0

Различные локализации Excel могут использовать разные символы для разделения столбцов. Попробуйте использовать «;» вместо «,», чтобы узнать, помогает ли это.

1

Как отметил Чей, локализация или изменения в вариантах Excel (символ разделителя списков) может привести к неправильному поведению.

Я рекомендую использовать Open XML для более безопасного вывода.

Заканчивать Generating an Excel file in ASP.NET

2

когда он импортируется, вы можете пойти в меню «Инструменты» -> «Текст по столбцам ...» меню и указать, ограничивающий характер.

0

Знаете ли вы, имеет ли файл CSV заголовок марки байтов? Возможно, у него нет спецификации или ее неправильной спецификации для локали.

0

Вы можете попробовать сохранить файл как .txt, не .csv, это заставляет Excel для разбора текстовых строк в столбцы

0

Если вы используете «» Excel 2007 будет читать его, но не 2003. И если вы использовать «;», наоборот.

Итак, лучший способ - создать таблицу html и вывести ее как .xls. Excel 2007 спросит, есть ли у него надежный источник.

Вот пример кода, как это сделать:

private void ExportToXLSFromDataTable(DataTable dtExport, string filename) 
{ 
    StringBuilder dataToExport = new StringBuilder(); 

    dataToExport.Append("<table>"); 
    dataToExport.Append("<tr>"); 

    foreach (DataColumn dCol in dtExport.Columns) 
    { 
     dataToExport.Append("<td>"); 
     dataToExport.Append(Server.HtmlEncode(dCol.ColumnName)); 
     dataToExport.Append("</td>"); 
    } 

    dataToExport.Append("</tr>"); 

    foreach (DataRow dRow in dtExport.Rows) 
    { 
     dataToExport.Append("<tr>"); 
     foreach (object obj in dRow.ItemArray) 
     { 
      dataToExport.Append("<td>"); 
      dataToExport.Append(Server.HtmlEncode(obj.ToString())); 
      dataToExport.Append("</td>"); 
     } 
     dataToExport.Append("</tr>"); 
    } 

    dataToExport.Append("</table>"); 

    if (!string.IsNullOrEmpty(dataToExport.ToString())) 
    { 
     Response.Clear(); 

     HttpContext.Current.Response.ContentType = "application/ms-excel"; 
     HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename); 

     HttpContext.Current.Response.Write(dataToExport.ToString()); 
     HttpContext.Current.Response.End(); 
    } 
} 
0

Excel, кажется, запутаться знаков UTF-16/UTF-8 байт порядка, так что постарайтесь избавиться от них.

С CSV содержимое ячеек может быть символом Юникода, но символы разделителя, цитаты и новой строки всегда должны быть ASCII. Вы можете думать о CSV, как всегда, ASCII, но каждая ячейка является блоком двоичного кода и может представлять собой некоторый текст в Юникоде.

Кроме того, взгляните на: http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm для получения дополнительной информации.

1

Я просто попытался с помощью Tab символов для поля вместо сепаратора обеспечивают запятые, и она работала в Excel 2007

(по крайней мере, я думаю, что это 2007, не может найти Помощь/О в глупом ленте)

Смежные вопросы