Короче говоря, да, вы можете сделать это.
ПРИМЕЧАНИЕ : для обоих приведенных ниже подходов требуется, чтобы на вашем сервере были установлены некоторые драйверы
Опция 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.