Экспорт 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$]