Как создать файл Excel с помощью хранимой процедуры ⇐ Excel
-
Гость
Как создать файл Excel с помощью хранимой процедуры
У меня есть приложение Blazor и база данных SQL Server. В приложении я хочу нажать кнопку и хочу, чтобы файл Excel был сгенерирован и загружен на компьютер клиента со всеми данными из таблицы, позволяющей называть «Пользователи». Другие потоки, кажется, используют программы, которыми я не являюсь (например, SSIS/Мастер экспорта) или предполагают, что я очень хорошо осведомлен, хотя я делаю это впервые. Лучшая тема, которую я нашел, была такая: https://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926
создать процедуру spUsers_generate_excel_with_columns ( @db_name varchar(100), @table_name varchar(100), @имя_файла varchar(100) ) как --Сгенерировать имена столбцов как набор записей объявить @columns varchar(20), @sql varchar(8000), @data_file varchar(100) выбирать @columns = coinesce(@columns + ',', '') + имя_столбца+' as ' + имя_столбца от информация_схема.столбцы где имя_таблицы = @имя_таблицы select @columns = '''''' + replace(replace(@columns, ' as ', ''''' as '), ',', ',''''') --Создать фиктивный файл для хранения реальных данных select @data_file = substring(@file_name, 1, len(@file_name) - charindex('\',verse(@file_name))) + '\data_file.xls' --Сгенерировать имена столбцов в переданном файле EXCEL set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c''' исполнитель(@sql) --Создаем данные в фиктивном файле set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c''' исполнитель(@sql) --Копировать фиктивный файл в переданный файл EXCEL set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"''' исполнитель(@sql) --Удалить фиктивный файл set @sql= 'exec master..xp_cmdshell ''del '+@data_file+'''' исполнитель(@sql) Но ничего не объяснено, поэтому я не знаю, что мне нужно заменить.
Например, что означает @columns=coalesce(@columns+',','')+column_name+' как '+column_name .
Я раньше использовал SQL и знаю внутренние соединения и переменные, но это кажется мне чуждым. Я просто хочу, чтобы в этой процедуре все выполнялось.
Будем благодарны за любую помощь.
Обновление: кажется, лучший совет — создать файл CSV. И это можно загрузить на компьютер клиента?
У меня есть приложение Blazor и база данных SQL Server. В приложении я хочу нажать кнопку и хочу, чтобы файл Excel был сгенерирован и загружен на компьютер клиента со всеми данными из таблицы, позволяющей называть «Пользователи». Другие потоки, кажется, используют программы, которыми я не являюсь (например, SSIS/Мастер экспорта) или предполагают, что я очень хорошо осведомлен, хотя я делаю это впервые. Лучшая тема, которую я нашел, была такая: https://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926
создать процедуру spUsers_generate_excel_with_columns ( @db_name varchar(100), @table_name varchar(100), @имя_файла varchar(100) ) как --Сгенерировать имена столбцов как набор записей объявить @columns varchar(20), @sql varchar(8000), @data_file varchar(100) выбирать @columns = coinesce(@columns + ',', '') + имя_столбца+' as ' + имя_столбца от информация_схема.столбцы где имя_таблицы = @имя_таблицы select @columns = '''''' + replace(replace(@columns, ' as ', ''''' as '), ',', ',''''') --Создать фиктивный файл для хранения реальных данных select @data_file = substring(@file_name, 1, len(@file_name) - charindex('\',verse(@file_name))) + '\data_file.xls' --Сгенерировать имена столбцов в переданном файле EXCEL set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c''' исполнитель(@sql) --Создаем данные в фиктивном файле set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c''' исполнитель(@sql) --Копировать фиктивный файл в переданный файл EXCEL set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"''' исполнитель(@sql) --Удалить фиктивный файл set @sql= 'exec master..xp_cmdshell ''del '+@data_file+'''' исполнитель(@sql) Но ничего не объяснено, поэтому я не знаю, что мне нужно заменить.
Например, что означает @columns=coalesce(@columns+',','')+column_name+' как '+column_name .
Я раньше использовал SQL и знаю внутренние соединения и переменные, но это кажется мне чуждым. Я просто хочу, чтобы в этой процедуре все выполнялось.
Будем благодарны за любую помощь.
Обновление: кажется, лучший совет — создать файл CSV. И это можно загрузить на компьютер клиента?
Мобильная версия