Каковы хорошие методы для выполнения расчетов в виде таблиц на языке программирования? - PullRequest
6 голосов
/ 05 августа 2009

Как лучше всего выполнять вычисления в виде таблиц на языке программирования? Пример: многопользовательское приложение должно быть доступно через Интернет, которое разбивает столбцы и ячейки чисел, как электронная таблица, основанная на представлении пользователя. Каковы наилучшие структуры данных / модели баз данных / шаблоны для обработки этого типа работы, чтобы обработка различных столбцов выполнялась эффективно и легко в php, java или даже .Net. Лучше использовать структуры данных внутри языка или лучше использовать базу данных? Если использование базы данных - это путь, то как это сделать?

Ответы [ 8 ]

2 голосов
/ 08 августа 2009

Чтобы сделать фактический расчет, посмотрите на теорию графов. По сути, вы хотите представить каждую ячейку как узел на графике, а каждую зависимость - как направленное ребро. Затем выполните топологическую сортировку , чтобы вычислить значение каждой ячейки в правильном порядке.

1 голос
/ 06 августа 2009

Resolver One - это приложение для работы с электронными таблицами, созданное в IronPython.

Существует объяснение общей механики вычисления [pythonology.org], которое оно используетсгенерированные пользователем эквалайзеры.

Overview of Resolver One's overall algorithm to deal with user generated ecuations

Соответствующее изображение, показывающее общий алгоритм Resolver One.

Следует отметить, что пользователи могут писать код Python дляинтерпретируется как в ячейках, так и в специальном месте «вне листа».

Посмотрите на еще один вопрос здесь, в SO , откуда я повторно использовал свой ответ.

1 голос
/ 05 августа 2009

В соответствии со словами «Мне нужно это сделать»
Microsoft имеет Службы Excel , которая делает то, что вы хотите. Операции с электронными таблицами на сервере. Он доступен через интерфейс веб-сервисов, так что вы можете подключаться и вести расчеты из Java, PHP, .NET и т.д.

Службы Excel являются частью Sharepoint 2007.

1 голос
/ 05 августа 2009

Aspose.Cells (ранее Aspose.Excel.Web) - хороший способ получить нужную функциональность.

Если вы не спросите больше "Как это делается?" чем «мне нужно сделать это». Тогда я бы посмотрел на другие ответы.

0 голосов
/ 17 августа 2009

SpreadsheetGear for .NET позволит вам загружать книги Excel, вставлять значения, вычислять и затем получать результаты.

Вы можете посмотреть несколько простых примеров расчета ASP.NET здесь , другие примеры ASP.NET здесь и загрузить бесплатную пробную версию здесь .

Отказ от ответственности: я владею SpreadsheetGear LLC

0 голосов
/ 08 августа 2009

Однажды я использовал двоичное дерево для хранения результатов анализа строки, используя BODMAS . Каждый узел был операцией между двумя другими узлами, которые могут быть числом, переменной или другой операцией.

Итак, у = х * х + 2

стали:

          +
      *       2
   x     x

К сожалению, это было в школе в Паскале и хранится на 5 1/4 "диске, так что вы не хотите:)

0 голосов
/ 08 августа 2009

Я должен отметить, что электронные таблицы Google уже делают подобные вещи.

0 голосов
/ 08 августа 2009

Я не могу сказать вам, как это сделать. Но я бы порекомендовал вам взглянуть на код PHPExcel . PHPExcel - это библиотека, которая позволяет создавать файлы Excel в PHP.

Рабочий процесс PHPExcel упрощен следующим образом:

  1. Создать пустой объект файла Excel
  2. Добавление ячеек (с данными или формулами) в «файл Excel»
  3. вызов функции создания, которая генерирует сам файл

В вашем случае вам придется заменить 3. что-то вроде «Создать веб-интерфейс».

Поэтому я бы порекомендовал вам посмотреть код этого проекта с открытым исходным кодом и посмотреть, какова общая структура. Это должно помочь вам решить вашу проблему.

...