powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Многоуровневые расчёты
16 сообщений из 16, страница 1 из 1
Многоуровневые расчёты
    #37827564
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
На работе пишу программу для создания отчётных форм.
Возник очень интересный вопрос: Как организовать многоуровневые расчёты. Т.е. Оператор заполняет первоначальный набор данных, затем из этих данных по формулам считаются ещё какие-то данные, затем эти данные заполняются в следующие поля, из этих полей считаются следующие данные и тд. как в excel.(по гуглил ответов пока разумных не нашёл).
Что важно: глубина и ширина расчётов не ограничена, набор данных может меняться часто и изменять певоначальный набор (состоит из 300-500 значений) вручную, достаточно муторное занятие.
Когда это было организованно на windows приложении, там не особо заморачивались и сделали просто повторение несколько раз до полного пересчёта. Сейчас я хотел воспользоваться для этой проблемы xls файлом с формулами, который просчитает мне всё, а я просто забиру готовые данные. У этого способа есть + и -
+Файл могу формировать не я а любой экономист
-скорость работы (phpexcel как-то долго работает, может правда я как-то не правильно делаю)
Подскажите как лучше сделать? Возможно кто-то знает алгоритм таких расчётов? Возможно Библиотеку кто хорошую подскажет.
Заранее спасибо!
P.S. Всегда было интересно как считает excel
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37827567
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять забыл LAMP
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37828188
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPl,

вы хотите онлайн эксель ? может на яваскрипте лучше считать, а на РНР уже генерить отчет ?
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37828715
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,
Ну да идея примерно такая)
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37828719
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот я добрался до определения содержимого ячейки (10, 10). А ее значение зависит от ячеек (5, 1), (2, 2) и (15, 11). Первые две посчитаны, а третья - нет. Значит требуем сначала ее пересчета. И т.д. Можно рекурсивно (но тогда надо ограничивать глубину). Можно развернуть рекурсию. Не забыть о детективании циклических ссылок.
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37829000
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.Dragon,
Так то я понял как должно быть. Вот с практической реализацией возникла проблема)
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37829027
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPl,

Ну в голову сходу приходит только такой алгоритм :
1) Ячейки где формулы как-то помечаем
2) Исправляя какуето ячейку - пересчитываем все ячейки с формулами
3) Не забываем про то что если формула ссылается на формулу нужно пересчитать в определенном порядке

З.Ы. Если вы начинающий, то это довольно сложная задача для начала
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37829187
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,
Я не совсем начинающий, но времени на реализацию мало... Надеялся, что есть по проще способ! эхххххххх
Пока прийдётся всё оставить на xls.
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37829998
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlEdd.Dragon,
Так то я понял как должно быть. Вот с практической реализацией возникла проблема)
Написание класса "Ячейка", который содержит набор параметров ячейки: тип содержимого, само содержимое (как есть и вычисленное), массив ссылок на ячейки, от которых зависит, метод getValue() - не проблема. Этот метод возвращает значение. Если оно еще не вычислено - вычисляет. Если это формула ЯчейкаА + Ячейка Б, то и возвращает ЯчейкаА.getValue() + Ячейка Б.getValue(), а они в свою очередь вернут свои значения или обратятся к тем ячейкам, от которых зависят. Все само собой.

Куда более трудоемкая задача - синтаксический разбор формул. А просчет листа - нет.
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37830683
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonКуда более трудоемкая задача - синтаксический разбор формул. А просчет листа - нет.

Если с 0 писать то да(хотя в любой хрестоматии по С\С++ есть такая задача), а если погуглить то и писать ничего не нужно, т.к. уже есть готовый, отлаженный велик
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37832142
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasEdd.DragonКуда более трудоемкая задача - синтаксический разбор формул. А просчет листа - нет.

Если с 0 писать то да(хотя в любой хрестоматии по С\С++ есть такая задача), а если погуглить то и писать ничего не нужно, т.к. уже есть готовый, отлаженный велик
Ну так в качестве отлаженного велика вообще можно взаимодействовать с Офисом через COM.
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37832143
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или с Либрой (не знаю через что) =)
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37837010
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,
мммм, под рукой либреофиса нет.

как понимаю open document format существует и для эдектронных таблиц,
и он также в xml-формате. вам надо подготовить числовые данные, формулы могут быть в шаблонах.

любое открытие файла вызовет пересчет формул и вы получите необходимые данные.
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37837202
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nexoma,
Я так и сделал через PHPExel))). Возможно когда-нибудь сделаю по др., а пока так пусть работает)
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37837452
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nexomaлюбое открытие файла вызовет пересчет формул и вы получите необходимые данные.
по моему это настраивается в Екселе
...
Рейтинг: 0 / 0
Многоуровневые расчёты
    #37842310
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,
да это настраивается, но я сделал там пересчёт и загружаю результат в бд)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Многоуровневые расчёты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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