Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет через Excel / 16 сообщений из 16, страница 1 из 1
10.08.2021, 15:34
    #40089883
NVT
NVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Добрый день. Прошу помощи с задачкой.
Есть некий расчет в xls файле.
В ячейки кладешь исх.данные и из ячеек результата забираешь рассчитанные данные.

Т.к. не нашел как записать данные в определенные ячейки, то делаю так
Преобразовал xls файл. сделал 3 листа:
1. исх.данные (ака таблица) Input
2. лист расчета (ячейки с исх.данными ссылается на лист 1 Input с исходными данными)
3. выходные данные (ака таблица) (ссылается на рассчитанные ячейки листа 2) Output

Ожидаю: обновлю ячейки в исх.данных = получу результат в в листе 3
Делаю так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
-- запись значений 1
UPDATE OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\sqlsrv\Test.xls','SELECT [А1],[А2],[А3],[А4] FROM [Input$]')
SET [А1] = 1, [А2] = 1, [А3] = 1, [А4] = 1
-- смотрим что получилось
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;Database=\\sqlsrv\test.xls;HDR=YES','SELECT * FROM [Input$]')
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;Database=\\sqlsrv\Test.xls;HDR=YES','SELECT * FROM [Output$]')

-- запись значений 2	
UPDATE OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\sqlsrv\Test.xls','SELECT [А1],[А2],[А3],[А4] FROM [Input$]')
SET [А1] = 2, [А2] = 2, [А3] = 2, [А4] = 2
-- смотрим что получилось	
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;Database=\\sqlsrv\Test.xls;HDR=YES','SELECT * FROM [Input$]')
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;Database=\\sqlsrv\Test.xls;HDR=YES','SELECT * FROM [Output$]')



Я вижу, что данные записались, а выходные данные не изменились - т.е. пересчета формул в excele не происходит.
В файле xls включен автопересчет формул.
Файл test.xls в аттаче.

Сервер 2012 x64

SQL Server
Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64) Dec 28 2017 15:03:48 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

Офиса на серваке не установлено вообще.

Что делать, как заставить excel пересчитываться?
...
Рейтинг: 0 / 0
10.08.2021, 16:38
    #40089889
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT
Офиса на серваке не установлено вообще.
нуу, с таким же успехом тогда можно "требовать" пересчёта формул от txt-файла :)

Эксель не просто должен быть установлен, а и ещё запущен (твой файл открыт в Экселе), что бы он что-то пересчитал.
Так что при таком "бизнес процессе", - только автоматизация Экселя
Через sp_AO или через CLR - тут уже варианты возможны :)
...
Рейтинг: 0 / 0
10.08.2021, 17:06
    #40089899
Alex_Va
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT,
Если нужен Excel, возможно имеет смысл, написать на VBA скрип, который будет отправлять на Ваш SQL-сервер запрос, получать результат и выводить его на листе рабочей книги.
Или Power Query
...
Рейтинг: 0 / 0
10.08.2021, 17:47
    #40089909
NVT
NVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Alex_Va, к сожалению этот расчет должен стать частью расчета на сервере, где в цикле считаются разные показатели разными алгоритмами, и в одном из алгоритмов нужно или самому переписать алгоритм из xls файла строк 250 где каждая строка ссылается на несколько других) или прогнать расчет через excel.

Решение вижу такое через открытие файла и запуска calculate, что бы он пересчитался... и сохранить его.

Если кто-то сможете подсказать как это сделать, то буду благодарен.

Что надо установить для работы с объектом екселя?
Можно ли обойтись без установки екселя, что-то типа runtime версии...

Буду благодарен за полезные ссылки.
...
Рейтинг: 0 / 0
10.08.2021, 18:45
    #40089929
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT,

вы ошибочно принимаете сервер баз данных за сервер приложений.
Напишите на C#, например,, приложение которое будет извлекать данные из базы и формировать нужный документ, все средства для этого имеются и не требуется установленный "офис".
...
Рейтинг: 0 / 0
10.08.2021, 18:49
    #40089930
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Владислав Колосов
NVT,

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


Ты ишо про питон забыл.

ЗЫ. "250 строк алгоритма" тредстартера уложатся в пару строк T-SQL.
Но можно, конешно, и на ассемблере...
...
Рейтинг: 0 / 0
10.08.2021, 18:55
    #40089932
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
aleks222,

А завтра форматирование захотят и так далее. При умении можно сформировать XML, эксель его проглотит как таблицу. Но зачем t-SQL использовать, когда есть лучшие средства.
...
Рейтинг: 0 / 0
11.08.2021, 09:42
    #40090011
Alex_Va
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT,
если результат выводится в сводной таблице, то даже при включённом автопересчёте формул, нужно "Данные -> Обновить всё"
...
Рейтинг: 0 / 0
11.08.2021, 10:00
    #40090013
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Владислав Колосов
NVT,
вы ошибочно принимаете сервер баз данных за сервер приложений.
.

скорее за клиента. Сервером тут выступает эксель =)
...
Рейтинг: 0 / 0
11.08.2021, 12:41
    #40090045
NVT
NVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Alex_Va, на сервере в цикле формируется некий перечень и некоторые характеристики перечня формируются по разным алгоритмам. Один из новых алгоритмов трудоемкий для программинга и я хотел решить его расчет через ексель. Выйти в середине цикла на клиента (adp), провести расчет через ексель и вернуться в цикл не представляется возможным. До кучи - после цикла (и формирования перечня) идут дальнейшие обработки этого перечня на стороне сервера.

Как написать процедуру (не на TSQL), встроить её в SQL и вызвать в цикле я не знаю (умения не хватает). Потому и хотел осуществить все через расчет в екселе.
...
Рейтинг: 0 / 0
12.08.2021, 12:13
    #40090251
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT
Alex_Va, на сервере в цикле формируется некий перечень и некоторые характеристики перечня формируются по разным алгоритмам. Один из новых алгоритмов трудоемкий для программинга и я хотел решить его расчет через ексель. Выйти в середине цикла на клиента (adp), провести расчет через ексель и вернуться в цикл не представляется возможным. До кучи - после цикла (и формирования перечня) идут дальнейшие обработки этого перечня на стороне сервера.

Как написать процедуру (не на TSQL), встроить её в SQL и вызвать в цикле я не знаю (умения не хватает). Потому и хотел осуществить все через расчет в екселе.


Короче, обычный ленивый программист.
...
Рейтинг: 0 / 0
12.08.2021, 18:42
    #40090395
NVT
NVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
aleks222, а по существу есть что сказать?
...
Рейтинг: 0 / 0
13.08.2021, 08:45
    #40090469
Alex_Va
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
NVT,

Попробуйте всё же отказаться от Excel и весь расчёт перенести на SQL. По существу вряд ли Вам кто-либо предложит другое решение.
...
Рейтинг: 0 / 0
13.08.2021, 10:19
    #40090481
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Alex_Va
По существу вряд ли Вам кто-либо предложит другое решение

нуу, другое предложено в первом ответе, типа - EXCEL i MSQL

и сразу же, совет от Glory , в той же теме :)
Glory
Rebata kto s com objektami rabotaet dajte novichku neskolko sovetov po etomu kodu.
И куда же вас новичков все время несет-то ???
Совет такой - не надо решать такие задачи на стороне сервера.
...
Рейтинг: 0 / 0
15.08.2021, 08:44
    #40090822
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Alex_Va
NVT,

Попробуйте всё же отказаться от Excel и весь расчёт перенести на SQL. По существу вряд ли Вам кто-либо предложит другое решение.


+1
Если все же сделаете по-своему, то не ставьте там свою фамилию, иначе будут бить, возможно, ногами.
...
Рейтинг: 0 / 0
18.08.2021, 13:00
    #40091460
NVT
NVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет через Excel
Критик, бить не будут, т.к. база для внутреннего пользования, а модуль расчета используется 1-2 юзерами для тестирования.
Но все равно не стал я действовать через хехель. Перешил расчет в TSQL.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет через Excel / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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