Экспорт SQL-запросов, чтобы преуспеть с несколькими листами и пользовательскими заголовками

Что мне нужно сделать, так это то, что клиент хочет иметь отчет в формате Excel с несколькими таблицами с настраиваемыми заголовками. Я пробовал SSRS 2008 Report Builder 2.0, но именование рабочих листов недоступно в SSRS 2008 Report Builder 2.0. Я пробовал bcp в SQL Server Management Studio, но не могу экспортировать его в несколько листов. Я поместил запросы в временные таблицы, есть ли способ экспортировать эти запросы в один и тот же документ Excel, но разные листы с разными заголовками для каждого листа.

Как это

Обратите внимание, что каждый лист имеет свое имя и заголовок.

Можно ли это сделать с SQL или есть обходной путь для SSRS 2008 Report Builder 2.0?

2 ответа

Решение

Вы можете использовать SQL Server Integration Services 2008R2 (SSIS) для этого. В SSIS есть пункт назначения потока данных Excel, который принимает имя листа в качестве параметра. Таким образом, вы можете создать свой пакет служб SSIS для заполнения различных таблиц электронной таблицы.

Я знаю, я знаю... ты тоже с ошибкой сталкивался

Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT ‘OpenRowset/OpenDatasource’ of component ‘Ad Hoc Distributed Queries’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Ad Hoc Distributed Queries’ by using sp_configure. For more information about enabling ‘Ad Hoc Distributed Queries’, search for ‘Ad Hoc Distributed Queries’ in SQL Server Books Online.

Вы можете сделать это в SSMS через T-SQL, следуйте этому примеру:

Сначала вам нужно разрешить SSMS обойти ошибку:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE

Затем вы можете сохранить результат в точной вкладке Excel следующим образом:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;
Database=C:\Users\Zivko\Desktop\SQL Data.xlsx;','SELECT * FROM [Sheet1$]') 
SELECT * FROM dbo.DimScenario

Файл.XLSX уже должен быть там с вкладкой, имеющей точное имя [Sheet1$]

Другие вопросы по тегам