Вопрос:
Что мне нужно сделать, клиент хочет иметь отчет в excel doc с несколькими листами с пользовательскими заголовками. Я пробовал 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?
Лучший ответ:
Для этого вы можете использовать SQL Server Integration Services 2008R2 (SSIS). В SSIS есть пункт назначения потока данных Excel, который принимает имя рабочего листа в качестве параметра. Вы можете создать свой SSIS-пакет, чтобы таким образом заполнить различные таблицы электронной таблицы.
Ответ №1
Я знаю, я знаю… вы тоже столкнулись с ошибкой:
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:UsersZivkoDesktopSQL Data.xlsx;’,’SELECT * FROM [Sheet1$]’) SELECT * FROM dbo.DimScenario
Файл.XLSX должен быть уже там, где вкладка имеет точное имя [Sheet1$]