SSRS csv экспорт с запятой в именах заголовков столбцов - PullRequest
6 голосов
/ 13 апреля 2010

По умолчанию csv принимает имя текстового поля в качестве имени заголовка csv для столбцов. В текстовом поле не должно быть пробела.

Как сделать заголовок, отличный от текстового поля для CSV?
Есть ли способ отобразить запятую в заголовке при экспорте в csv?

Примечание : решение должно быть только для одного отчета; не глобальный.

Ответы [ 5 ]

3 голосов
/ 08 марта 2011

Имя столбца происходит из свойства DataElementName или, если оно пустое, из свойства Name. К сожалению, не допускайте ни запятых, ни цитирования.

Здесь есть запись в блоге:

http://www.behindthecode.net/Blog/post/2008/01/29/How-to-modify-Reporting-Services-CSV-export-Behavior.aspx

о том, как изменить настройки в конфигурационном файле для экспорта в csv. Это глобальные изменения. Список доступных свойств здесь:

http://msdn.microsoft.com/en-us/library/ms155365.aspx

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

1 голос
/ 10 ноября 2017

Это решение работает: https://stackoverflow.com/a/32110072/674237

В итоге:

  1. Измените запрос, чтобы первая строка в наборе данных была желаемыми заголовками столбцов. Например, выберите имена заголовков и объедините их с набором данных.
  2. Добавьте новое расширение рендеринга CSV на сервер отчетов, исключая заголовки.

Этот обходной путь позволит вам поместить любые значения в заголовки.

1 голос
/ 18 декабря 2014

Короче говоря, Нет, это невозможно .

С Ошибка столбца SSRS 2008 при экспорте в файл CSV :

Для экспорта в csv заголовок столбца определяется свойством DataElementName текстового поля, которое фактически содержит данные. Если свойство DataElementName явно не установлено пользователем, DataElementName автоматически получает значение по умолчанию, равное значению свойства textbox.Name.

При этом, я полагаю, вы получаете эту проблему, потому что RDL имеет ограничение, согласно которому свойства reportItem.Name и reportItem.DataElementName должны быть CLS-совместимые идентификаторы . Заголовки типа "Phone #", "Other Name(s)" и т. Д. Не соответствуют CLS.

В этом можно убедиться, открыв отчет в BIDS или RB и попытавшись установить свойство DataElementName / Name текстового поля, содержащего данные для этих имен.

Вы получите сообщение об ошибке:

Property Value is not valid. Specify a valid name. The name cannot contain spaces, and it must begin with a letter followed by letters, numbers, or the underscore character (_).

Существует проблема Microsoft Connect по этому поводу, но, к сожалению, похоже, что на нее не будут действовать.
См. : Использование выражений для свойства DataElementName (для экспорта в CSV)

0 голосов
/ 15 февраля 2016

Имена столбцов для Csv, Dbf и Xml выбираются из поля <Name> по умолчанию.

Решил эту проблему, добавив соответствующие имена для каждого из этих форматов в поле <Tag> в файле * .mrt. Например:

<Name>Txt_InternalName</Name> <Tag>CSV:"Name for Csv"; DBF: "Name for DBF"; XML: "Name for Xml"; Default: "Default Name for Csv Dbf Xml"</Tag>

Также решает проблему с несовместимыми идентификаторами CLS в заголовках

0 голосов
/ 15 апреля 2010

Добавьте следующие параметры запроса к вашему URL:

  • Для # - [url] &rs:format=CSV&rc:FieldDelimiter=%23
  • Для ; - [url] &rs:format=CSV&rc:FieldDelimiter=";"

Не уверен, что вы можете сделать это прямо из диспетчера отчетов, не изменяя где-либо конфигурационные файлы

Обновление : После перечитывания этого вы возвращаете заголовки столбцов из процедуры, подобной этой?

SELECT tbl.colname [my column name, some text],  
       tbl.col2    [another, col]

Квадратные скобки позволят вам экранировать символы.

...