Разработка отчета SSRS с использованием источника данных из базы данных и Excel - PullRequest
0 голосов
/ 26 марта 2020

Я разрабатываю отчет SSRS, извлекающий большую часть данных из SQL серверной базы данных.

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

Можно ли создать этот отчет, извлекая данные из базы данных и Лист Excel?

1 Ответ

2 голосов
/ 26 марта 2020

Короче говоря, да, вы можете сделать это.

ПРИМЕЧАНИЕ : для обоих приведенных ниже подходов требуется, чтобы на вашем сервере были установлены некоторые драйверы

Опция 1 : прямой доступ из SSRS

Вы можете добавить второй источник данных, который указывает на ваш файл Excel напрямую через соединение ODB C или OLEDB. Затем вам нужно будет использовать поиск, чтобы эффективно «объединить» данные с вашими SQL данными. Существует несколько руководств по использованию данных Excel в качестве источника данных SSRS.

Вариант 2: Доступ к данным Excel из t- SQL

Однако мой подход будет сделать это на вашем SQL сервере, используя OPENROWSET. Таким образом, вы можете получить доступ к данным непосредственно в своем запросе и присоединить их к вашим SQL данным, прежде чем передавать результаты в свой отчет.

Вот несколько типичных фрагментов кода, которые я хотел бы запустить, чтобы получить данные Excel в мой база данных для дальнейшей обработки

SET @Cols = 'Country, Category, Period, Amount'
SET @Select = 'SELECT FROM [myExcelSheetName$A1:Z1000] '
SET @path = '\\myfileserver\myfolder\'
SET @filename = 'myExcelFile.xlsx'

SET @ExecCmd = 'INSERT INTO myExcelImportTable (' + @cols + ')
            SELECT ' + @cols + ' 
            FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database=' + @path + @filename + ';HDR=YES;IMEX=0'',''' +  @select + ''')
            WHERE Country != ''Country'' AND ISNULL(Country,'''') != '''' '

PRINT @ExecCmd
EXEC (@ExecCmd) AS LOGIN= 'myElevatedLoginName'

** Примечание: ** myElevatedLoginName - это логин SQL с правами доступа администратора. Во время тестирования / отладки я обычно подключаюсь к своему серверу с таким логином, чтобы вы могли напрямую запускать команды t- sql.

...