2009-08-05 1 views
6

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

+2

Что бы вы ни делали, начать думать о круговой опорной проблеме * рано * ... – dmckee

+0

И когда/если кто-то упоминает писать компилятор/интерпретатор для языка, который вы строите, сначала выполните поиск: на ваш вопрос компилятора/интерпретатора был дан ответ на SO. – dmckee

+2

Я не уверен, что понимаю, что вы здесь просите. Вам нужны столбцы и ячейки номеров, и вы должны разрешить пользователям их вычислять? Это может быть сделано, ну, почти что угодно. Сколько пользователей? Если один пользователь вводит числа, нужно ли другим пользователям сразу его увидеть? Похоже, что то, что вы ищете, может быть сделано одинаково хорошо, используя J2EE или .NET, но это основано на моем очень неполном понимании ваших требований. Если вы сконцентрируете свой вопрос немного более тесно, я думаю, вы получите ответы на более эффективные вопросы. – rtperson

ответ

1

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

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

+0

На данный момент это больше похоже на «Мне нужно это сделать». Хотя обучение «как это делается» всегда хорошо. – Kunle

+0

Это очень интересно, так как это позволяет электронной таблице быть вычислительным механизмом вашего приложения. – Kunle

1

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

Excel Services является частью Sharepoint 2007

+1

Это хорошо, но я бы предпочел не жениться на Microsoft. – Kunle

+0

К сожалению, если вы не построите все с нуля, вы будете «женаты» на продавца. Какие производители вы хотите рассмотреть? Что относительно проектов с открытым исходным кодом? –

1

Resolver One является Spreadsheet приложение сделано в IronPython.

Существует an explanation of the overall mechanic for the calculation [pythonology.org], который используется для пользовательских эквалайзов.

Overview of Resolver One's overall algorithm to deal with user generated ecuations http://pythonology.org/images/final/resolver/images/basic-spreadsheet-eval-web.png

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

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

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

0

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

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

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

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

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

2

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

-1

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

0

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

Так у = х * х + 2

стали:

  + 
     *  2 
    x  x 

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

0

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

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

Отказ от ответственности: У меня есть SpreadsheetGear LLC