powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет через Excel
16 сообщений из 16, страница 1 из 1
Расчет через Excel
    #40089883
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Прошу помощи с задачкой.
Есть некий расчет в 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
Расчет через Excel
    #40089889
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NVT
Офиса на серваке не установлено вообще.
нуу, с таким же успехом тогда можно "требовать" пересчёта формул от txt-файла :)

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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


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


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