#csv #export #ssrs-2008 #ssrs-tablix
#csv #экспорт #ssrs-2008 #ssrs-tablix
Вопрос:
Рассмотрим следующий источник данных:
declare @Test table (EmpId int, ProdId int, Sold int)
insert @Test (EmpId, ProdId, Sold) values (1, 1, 1)
insert @Test (EmpId, ProdId, Sold) values (1, 2, 2)
insert @Test (EmpId, ProdId, Sold) values (1, 3, 3)
insert @Test (EmpId, ProdId, Sold) values (1, 4, 4)
insert @Test (EmpId, ProdId, Sold) values (2, 1, 5)
insert @Test (EmpId, ProdId, Sold) values (2, 2, 6)
insert @Test (EmpId, ProdId, Sold) values (2, 3, 7)
insert @Test (EmpId, ProdId, Sold) values (2, 4, 8)
select * from @Test
Я создаю отчет Sql Server Reporting Services (SSRS) 2008 R2, который содержит единственную матрицу, настроенную следующим образом:
| | [ProdId] |
| [EmpId] | [Sum(Sold)] |
Которая в режиме предварительного просмотра отображается следующим образом (как и ожидалось):
| | 1 | 2 | 3 | 4 |
| 1 | 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 7 | 8 |
Но когда я экспортирую ее в CSV, я получаю это:
| EmpId | ProdId | Sold |
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 3 | 3 |
| 1 | 4 | 4 |
| 2 | 1 | 5 |
| 2 | 2 | 6 |
| 2 | 3 | 7 |
| 2 | 4 | 8 |
Другими словами, когда я экспортирую в CSV, я теряю макет матрицы, и каждая строка данных отображается в одной строке CSV. Обратите внимание, что отчет работает должным образом, если я экспортирую в Excel, поэтому пока эта проблема, похоже, ограничивается CSV. Я попытался реструктурировать матрицу как таблицу внутри таблицы, но это тоже не решает проблему. Есть предложения?
Ответ №1:
Это часть большого изменения в представлении отчетов между SSRS 2005 и SSRS 2008.
Единственные решения, которые я нашел, это:
-
Экспортируйте в Excel, затем сохраните документ Excel в формате CSV — Это упрощает формат Excel и требует настройки группировок таким образом, чтобы каждая строка повторяла значения родительских групп. Однако с самого начала при экспорте в Excel возникают проблемы, например, если последовательные строки содержат одни и те же данные, программа визуализации иногда пропускает данные, что можно остановить, установив для параметра ‘DataElementOutput’ значение True для затронутых столбцов вместо ‘Auto’, что позволяет программе визуализации угадывать, какие поля вы считаете важными.
-
Создайте свой отчет в виде плоской таблицы — Это в значительной степени сводит на нет смысл создания матрицы с самого начала, и это непросто, но вы можете определить столбцы заранее и можете сделать это динамически либо в запросе, либо используя множество выражений в значении текстового поля и установив динамическую видимость столбцов. Но для выполнения этого потенциально может потребоваться создание десятков или сотен столбцов для обработки потенциального появления определенного значения.
-
Не обновляйте до 2008 — Если матричная отчетность и форматирование экспорта критически важны для бизнеса, на самом деле нет хорошего способа воссоздать функциональность в 2008 году, придерживаться SSRS 2005 года — единственный надежный способ получить старый рендеринг.
Ресурсы:
Ответ №2:
Вот обходной путь:
- Переключите источник выходных данных CSV на дополнительный табликс, который показывает все данные как есть.
- Отключите вывод исходной таблицы в CSV (Tablix > Properties > DataElementOutput > NoOutput).
- Скройте дополнительный табликс, чтобы он не отображался. (Табликс> Щелкните правой кнопкой мыши> Свойства табликса> Видимость> Скрыть).
Таким образом, у вас есть полный контроль над отображением на экране и выводом CSV.
Ответ №3:
Это иногда работает в SSRS 2016:
- Выберите недостающие столбцы
- Откройте свойства
- Измените только данные — > DataElementOutput в качестве выходных данных
- Это зависит от того, где работает эта операция. Например, когда я делал это в Tablix, это не сработало, но это сработало, когда я сделал это в столбце. Вы могли бы попробовать создать таблицу, просто чтобы проверить, работает ли это лучше после этого. К сожалению, вы не можете создавать таблицы в нижних колонтитулах, где это было бы особенно полезно.