4

我正在使用基于 Web 的数据库,我需要在其前端添加电子表格功能。我在想我可以使用 Google Docs 电子表格。他们的 Google App Script 似乎具有我需要的功能。特别是我可以将 URLFetch 服务与 onEdit 事件结合使用来保持电子表格和数据库同步——AJAX 风格。它还让我在构建、保存和共享电子表格方面有很大的灵活性

然而,关于 Google App Script 的一些事情让我犹豫了。它在服务器端运行,因此很难在本地调试。它没有任何带有断点或步进的调试器。它不能导入外部模块或库。没有 JSLint。没有这些,我开始有“呃,哦,这会很痛”的感觉。

所以我想知道是否有更好的方法将浏览器可访问的电子表格功能连接到现有的基于 Web 的数据库?或者是否有充分利用 Google App Script 的最佳做法?

编辑:这些是潜在的解决方案,按最适合我的应用程序的顺序排列:

  1. 基于浏览器的 JavaScript 电子表格引擎。(可能不存在。)
  2. 我可以在 Google App Engine 上安装的 Python 电子表格引擎模块。(我也没见过这个。)
  3. 一种更强大的 AJAXian 方法来处理 Google 电子表格。(见原始问题。)
  4. 我可以在 EC2 上安装的开源电子表格引擎。(这些似乎存在——可能是SocialCalcSimple Spreadsheet。推荐?)
4

2 回答 2

2

我们在网页上使用电子表格功能,但不是编写电子表格的所有功能,而是使用计算引擎,它为我们提供了电子表格功能的编程核心。计算引擎知道如何计算数百种类型的公式、处理依赖关系(以及依赖关系之间的顺序)、单元格格式等。在我的特定情况下,我们使用 SpreadsheetGear - http://www.spreadsheetgear.com/products/spreadsheetgear。网络.aspx

我们使用一些 javascript 创建了一个带有单元格导航和各种其他功能的电子表格的 HTML 表示。当我们需要重新计算工作表时(例如 Excel 中的 F9),我们将整个电子表格发送到服务器,要求它计算所有内容,然后用结果重新填充网页表示。这也可能会写入数据库,具体取决于电子表格上的内容。

也许我现在需要你的意见,看看我的答案是否离轨道不太远。

于 2010-12-15T09:32:56.020 回答
0

所以我自己深入研究了这个,它确实有点疼。以下是详细信息:

坏处:

  1. 你必须使用他们的编辑器,而不是 JSLint。
  2. 没有调试器。脚本在服务器端运行,因此 Firebug 和其他浏览器工具是零帮助。“查看->执行记录”和“查看->日志”有点帮助。但它们似乎在“onEdit”事件中不起作用。
  3. 与网络的连接通过他们的 UrlFetch 服务进行,该服务没有异步模式。它在“onEdit”事件中根本不起作用:http ://code.google.com/p/google-apps-script-issues/issues/detail?id=185
  4. 它们基本上具有三种事件类型。“onLoad”、“onInstall”和“onEdit”。特别是我严重错过了“onClick”事件。
  5. 没有外部库支持。

好的:

  1. 它是真正的 JavaScript,因此它的功能可预测,而且我可以使用外部 JSLint 工具。
  2. 学习曲线浅。了解工作表、范围和设置/获取值是关键概念。
  3. 用于操作电子表格项目、格式设置等的许多功能。
  4. 谷歌数据 API 支持?我没有使用过这个,但它看起来像是连接到外部网络资源的方式。
  5. 其他查看电子表格的人可以立即看到我的电子表格上集成良好的脚本更新。

总的来说,这个环境有很多潜力,有很多 UI 功能,但它似乎仍然缺少一些用于进行实际生产开发的关键功能。

于 2010-12-01T22:00:08.900 回答