powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сформировать Эксель на сервере и выложить в папку
23 сообщений из 23, страница 1 из 1
Как сформировать Эксель на сервере и выложить в папку
    #40095440
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас пользователь нажимает кнопку в экселе и с помощью VBA происходит подключение к серверу, запускается хранимку, она выгружает данные и формулы для Экселя, дальше результат обрабатывается на VBA, строиться сводная таблица, форматирование и т.п.

Хранимка выдает результат например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
				select 
						 'Название площадки'	= mc.production_name	
						,'Код набивки'			= mc.stuffing_id	
						,'Название набивки'		= mc.stuffing_name	
						,'Тип набивки'			= mc.stuffing_type
						,'Группа набивок'		= mc.stuffing_group	
						,'Ограничение по замесам для группы'	= mc.stuffing_group_restrictions_count	
						,'Ферментация дней'		= mc.fermentation_days	
						,'Созревание дней'		= mc.maturation_days	
						,'Упаковка дней'		= mc.packaging_days	
						,'Объем 1 замеса, кг'	= mc.stuffing_kg	
						,'Объем камеры, кг'		= mc.chamber_kg	
						,'Дата закладки'		= ld.dt	
						,'Дата выхода'			= dateadd(day, mc.fermentation_days + mc.maturation_days ,ld.dt)
						,'Дата доступности'		= dateadd(day, mc.fermentation_days + mc.maturation_days + mc.packaging_days ,ld.dt)

						,'Закладка (замес)'		= '=VLOOKUP(RC3, ''План набивок''!C5:C1500, MATCH(RC[-3],''План набивок''!R2C5:R2C1500, 0) + 6, 0)'
						,'Итог, кг'				= '=VLOOKUP(RC3, ''План набивок''!C5:C1500, MATCH(RC[-4],''План набивок''!R2C5:R2C1500, 0) + 7, 0)'
			
				from #main_columns as mc
				cross join #list_dt as ld
				where mc.sap_id is null



Подскажите какие можно использовать подходы, что бы построить сразу отчет на стороне сервера с формулами, форматированием и уже выложить его в папку, а не формировать на VBA и потом только сохранять в папку?
SSRS не поддерживает выгрузку сложных формул

Версия сервера 2017
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095443
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha,

как вариант - ХП запускает JOB, в котором на PowerShell заполняется все как нужно и сохраняется куда угодно (с доступом конечно же)
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095445
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL
Focha,

как вариант - ХП запускает JOB, в котором на PowerShell заполняется все как нужно и сохраняется куда угодно (с доступом конечно же)


Зачем эти сложные телодвижения?

Мухи отдельно - котлеты отдельно.

1. Считаем на сервере.
2. Показываем в экселе.
3. VBA идет лесом.

ЗЫ. Те, "сложные" формулы, которые продемонстрировал ТС - вполне по плечу серверу. Он сложнее может.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095447
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

форматирование тоже на сервере формировать?
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095450
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL
aleks222,

форматирование тоже на сервере формировать?


Форматирование, заданное в экселе - сохраняется при обновлении данных.
Если только там не форматирование сумашедшего.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095471
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно сформировать статичный отчет, то есть вставить данные и формулы, пользователь в дополнительном столбе указывает значения и происходит дополнительный расчет
Форматирование не только отчета, но еще условное форматирование.

Мне не просто таблицу нужно в эксель выгрузить.


Oleg_SQL
Focha, как вариант - ХП запускает JOB, в котором на PowerShell заполняется все как нужно и сохраняется куда угодно (с доступом конечно же)

Как вы предлагете формировать отчет с помощью PowerShell?


aleks222

Зачем эти сложные телодвижения?
Мухи отдельно - котлеты отдельно.
1. Считаем на сервере.
2. Показываем в экселе.
3. VBA идет лесом.
ЗЫ. Те, "сложные" формулы, которые продемонстрировал ТС - вполне по плечу серверу. Он сложнее может.

Нужно по сути пользователю инструмент в котором он может внося различные данные, формулы ему показывают новые цифры.

Oleg_SQL
aleks222,форматирование тоже на сервере формировать?

Да, думаю SSRS использует подход типа шаблона

aleks222

Форматирование, заданное в экселе - сохраняется при обновлении данных.
Если только там не форматирование сумашедшего.

Сумащедшее: условное форматирование, группировка, промежуточные итоги, линии и т.п., а так же сводная таблица


Прикрепил пример отчета, оранжевый это столбцы с формулами
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095474
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример одной формулы
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095480
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha
Мне нужно сформировать статичный отчет, то есть вставить данные и формулы, пользователь в дополнительном столбе указывает значения и происходит дополнительный расчет
Форматирование не только отчета, но еще условное форматирование.

Мне не просто таблицу нужно в эксель выгрузить.

Как вы предлагете формировать отчет с помощью PowerShell?




Не ясен вопрос. Пишите код и формируете. В сети множество примеров.
И не обязательно на нём, можно на том же C# и тп (если есть на чем скомпилировать)
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095509
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL
Focha
Мне нужно сформировать статичный отчет, то есть вставить данные и формулы, пользователь в дополнительном столбе указывает значения и происходит дополнительный расчет
Форматирование не только отчета, но еще условное форматирование.

Мне не просто таблицу нужно в эксель выгрузить.

Как вы предлагете формировать отчет с помощью PowerShell?




Не ясен вопрос. Пишите код и формируете. В сети множество примеров.
И не обязательно на нём, можно на том же C# и тп (если есть на чем скомпилировать)

Вот походу мне это подходит Как из MSSQL создать Excel-файл?
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095524
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha,

xml? Думаете это будет проще и читабельнее ?
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095557
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha
Мне нужно сформировать статичный отчет, то есть вставить данные и формулы, пользователь в дополнительном столбе указывает значения и происходит дополнительный расчет
Форматирование не только отчета, но еще условное форматирование.

Мне не просто таблицу нужно в эксель выгрузить.




Считай на здоровье. Кто тебе мешает?

Данные, загруженные в эксель, никак не влияют на фсе прочие формулы.
Формулы продолжают считать.
Другое дело, что ты не умеешь.
Но это твоя проблема.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095579
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Focha
Мне нужно сформировать статичный отчет, то есть вставить данные и формулы, пользователь в дополнительном столбе указывает значения и происходит дополнительный расчет
Форматирование не только отчета, но еще условное форматирование.

Мне не просто таблицу нужно в эксель выгрузить.




Считай на здоровье. Кто тебе мешает?

Данные, загруженные в эксель, никак не влияют на фсе прочие формулы.
Формулы продолжают считать.
Другое дело, что ты не умеешь.
Но это твоя проблема.

Вы можете дать совет или не давать такие ответы
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095580
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL
Focha,

xml? Думаете это будет проще и читабельнее ?

Нет, но пока это самый я думаю хороший вариант
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095582
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha
aleks222
пропущено...


Считай на здоровье. Кто тебе мешает?

Данные, загруженные в эксель, никак не влияют на фсе прочие формулы.
Формулы продолжают считать.
Другое дело, что ты не умеешь.
Но это твоя проблема.

Вы можете дать совет или не давать такие ответы

Может за тебя еще и сделать?
Ты хоть умеешь получить данные сервера в экселе БЕЗ vba?
То же самое, но с передачей параметров на сервер?
Учись.
А не фантазируй. Сложный отчет - это признак скудоумия.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095603
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,

прислушайтесь к aleks222 - он совершенно прав, за исключением последнего пункта - VBA таки пригодится.

Если подробней, то:
Сначала избавляемся от ВПР-ов и формул в книге Excel. Для этого используемые в ВПР таблицы из Excel переезжают на сервер, а Вы занимаетесь анализом формул во всех-всех-всех столбцах отчёта, включая скрытые и свёрнутые.
Затем пишете на сервере функцию из нескольких сотен строк, так как число столбцов отчёта превышает несколько десятков, с необходимыми параметрами, которая бы генерировала и рассчитывала все эти столбцы.
Затем открываем книгу с отчётом, переходим в редактор VBA, и пишем процедуру, которая будет выполнять на сервере функцию и выгружать полученные данные на заранее отформатированный лист отчёта с необходимыми заголовками, разметками, условным форматированием и прочей красотой. Параметры для процедуры, которые она будет передавать функции, можно хранить на отдельном листе.
Также в процедуре надо предусмотреть код для новой группировки строк, если она может меняться со временем.
А если в отчёте есть расчёт итогов по неделям / месяцам / годам / объектам, то это также можно засунуть в функцию - я же писал, что её суть - избавить лист Excel от ВПР-ов и функций?
В общем, от двух дней (крайне оптимистично) до пары недель точно придётся потратить.

P.S. Коллеги, я в курсе про PowerQuery, но если нужно будет передавать каждый раз в функцию новые параметры, то всё равно процедура, которая будет менять настройки соединения, будет нужна.

P.P.S. про всякие нюансы типа "в прошлом месяце в этом столбце вспомогательной таблицы были такие значение, а в этом должны быть вот такие, но терять старые значение нельзя - а вдруг надо будет переделать отчёт за прошлый месяц, но и плодить кучу копий одной и той же таблицы нельзя" молчу.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095639
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222

Если подробней, то:
Сначала избавляемся от ВПР-ов и формул в книге Excel. Для этого используемые в ВПР таблицы из Excel переезжают на сервер, а Вы занимаетесь анализом формул во всех-всех-всех столбцах отчёта, включая скрытые и свёрнутые.
Затем пишете на сервере функцию из нескольких сотен строк, так как число столбцов отчёта превышает несколько десятков, с необходимыми параметрами, которая бы генерировала и рассчитывала все эти столбцы.
Затем открываем книгу с отчётом, переходим в редактор VBA, и пишем процедуру, которая будет выполнять на сервере функцию и выгружать полученные данные на заранее отформатированный лист отчёта с необходимыми заголовками, разметками, условным форматированием и прочей красотой. Параметры для процедуры, которые она будет передавать функции, можно хранить на отдельном листе.
Также в процедуре надо предусмотреть код для новой группировки строк, если она может меняться со временем.
А если в отчёте есть расчёт итогов по неделям / месяцам / годам / объектам, то это также можно засунуть в функцию - я же писал, что её суть - избавить лист Excel от ВПР-ов и функций?
В общем, от двух дней (крайне оптимистично) до пары недель точно придётся потратить.

Из вашего варианта я правильно понял, что сама структура отчета будет в виде функций?


aleks222

P.S. Коллеги, я в курсе про PowerQuery, но если нужно будет передавать каждый раз в функцию новые параметры, то всё равно процедура, которая будет менять настройки соединения, будет нужна.

мне неподходит, так как связь с сервером должна отсутствовать


aleks222

P.P.S. про всякие нюансы типа "в прошлом месяце в этом столбце вспомогательной таблицы были такие значение, а в этом должны быть вот такие, но терять старые значение нельзя - а вдруг надо будет переделать отчёт за прошлый месяц, но и плодить кучу копий одной и той же таблицы нельзя" молчу.

это вообще не рассматривается
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095640
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Focha
пропущено...

Вы можете дать совет или не давать такие ответы

Может за тебя еще и сделать?
Ты хоть умеешь получить данные сервера в экселе БЕЗ vba?
То же самое, но с передачей параметров на сервер?
Учись.
А не фантазируй. Сложный отчет - это признак скудоумия.

Ты че такой злой?
Убедительная просьба не отвечать больше в этой теме, так как советов вы не даете
Возможно вы завидуете, что я разрабатываю крутой инструмент для аналитиков, а вы не можете даже формулу прописать в экселе, больше я не вижу причин вашего поведения.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095695
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha
aleks222

Если подробней, то:
Сначала избавляемся от ВПР-ов и формул в книге Excel. Для этого используемые в ВПР таблицы из Excel переезжают на сервер, а Вы занимаетесь анализом формул во всех-всех-всех столбцах отчёта, включая скрытые и свёрнутые.
Затем пишете на сервере функцию из нескольких сотен строк, так как число столбцов отчёта превышает несколько десятков, с необходимыми параметрами, которая бы генерировала и рассчитывала все эти столбцы.
Затем открываем книгу с отчётом, переходим в редактор VBA, и пишем процедуру, которая будет выполнять на сервере функцию и выгружать полученные данные на заранее отформатированный лист отчёта с необходимыми заголовками, разметками, условным форматированием и прочей красотой. Параметры для процедуры, которые она будет передавать функции, можно хранить на отдельном листе.
Также в процедуре надо предусмотреть код для новой группировки строк, если она может меняться со временем.
А если в отчёте есть расчёт итогов по неделям / месяцам / годам / объектам, то это также можно засунуть в функцию - я же писал, что её суть - избавить лист Excel от ВПР-ов и функций?
В общем, от двух дней (крайне оптимистично) до пары недель точно придётся потратить.

Из вашего варианта я правильно понял, что сама структура отчета будет в виде функций?


aleks222

P.S. Коллеги, я в курсе про PowerQuery, но если нужно будет передавать каждый раз в функцию новые параметры, то всё равно процедура, которая будет менять настройки соединения, будет нужна.

мне неподходит, так как связь с сервером должна отсутствовать


aleks222

P.P.S. про всякие нюансы типа "в прошлом месяце в этом столбце вспомогательной таблицы были такие значение, а в этом должны быть вот такие, но терять старые значение нельзя - а вдруг надо будет переделать отчёт за прошлый месяц, но и плодить кучу копий одной и той же таблицы нельзя" молчу.

это вообще не рассматривается


Даже цитировать не умеешь.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095696
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha
aleks222
пропущено...

Может за тебя еще и сделать?
Ты хоть умеешь получить данные сервера в экселе БЕЗ vba?
То же самое, но с передачей параметров на сервер?
Учись.
А не фантазируй. Сложный отчет - это признак скудоумия.

Ты че такой злой?
Убедительная просьба не отвечать больше в этой теме, так как советов вы не даете
Возможно вы завидуете, что я разрабатываю крутой инструмент для аналитиков, а вы не можете даже формулу прописать в экселе, больше я не вижу причин вашего поведения.


В темах отвечают не только для тредстартеров. Есть еще и другие. Вменяемые.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095707
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222

Даже цитировать не умеешь.

Ты за своими ошибками следи, явно у тебя проблемы и че ты пристал?

aleks222

В темах отвечают не только для тредстартеров. Есть еще и другие. Вменяемые.

Вот к чему этот ответ?

Помоги найти решение и не пиши еренду
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095751
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha
aleks222

Даже цитировать не умеешь.

Ты за своими ошибками следи, явно у тебя проблемы и че ты пристал?



Не бухти.
Приписывать мне не принадлежащие мне высказывания - некорректно.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095771
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,

вам нужен C# для приложений Office. Можно оформить процедурой CLR, но лучше отдельным приложением, например, веб-сервисом + веб интерфейс.
...
Рейтинг: 0 / 0
Как сформировать Эксель на сервере и выложить в папку
    #40095775
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha

Из вашего варианта я правильно понял, что сама структура отчета будет в виде функций?


Да. В файле Excel на листе с отчётом вводите в выбранные ячейки значения параметров и нажимаете кнопку. И получаете под строкой-заголовком отчёта новые данные. И никаких пересчётов данных при каждом новом открытии книги. Ну или если есть необходимость или желание что-то по-прежнему привязывать либо рассчитывать в книге, то часть столбцов грузите из функции на сервере, а часть пускай считается на листе.
Если не хотите давать в руки пользователей доступ к серверу - создаёте отдельный лист с параметрами и кнопкой. В окне редактора VBA этот лист помечаете как Very Hidden, на проект VBA ставите пароль, и никто из простых пользователей этот лист отобразить не сможет. Кнопку нажали, данные обновили, лист Very Hidden поставили, книгу сохранили, и готово.

Focha

мне неподходит, так как связь с сервером должна отсутствовать


Не хотите PowerQuery - не надо, просто в процедуре VBA кода будет больше.


Focha

это вообще не рассматривается


Рано или поздно с этим придётся столкнуться, когда выяснится, что в этом месяце в справочнике исправили часть строк, а надо выгрузить отчёт за прошлый месяц заново со старыми значениями справочника. Вот если справочники оставить внутри книги Excel, и выгружать только часть столбцов отчёта, тогда это не проблема, да.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сформировать Эксель на сервере и выложить в папку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]