创建电子表格

时间:2013-12-23 17:14:59

标签: javascript mysql ruby-on-rails ruby spreadsheet

我有一个我正在构建的应用程序,它基本上只是一个在线电子表格。我一直在想如何开始构建这个。我的主要技术堆栈是使用Rails,但我可以根据工作进行更改,但我更愿意至少保留Rails的后端(然后可能是主干前端?)

应用程序并不完全是一个电子表格,而不是像在Excel中那样通过A,B,C的列,用户将能够为列创建名称。例如,他们可以创建一个名为 Revenue 的列,并且行1,2,3的值为 $ 1000 $ 2000 $ 3000 。用户还可以对列ASC或DESC进行排序。

我想过只有一个包含30个字段的Mysql表,其中15个是值,15个是相应的列名。除非这不是一个非常低效的方法吗?更不用说用户可以放入多少列的硬限制。

那么有更好的方法吗?或者我刚才描述的方法最好的方法。

3 个答案:

答案 0 :(得分:2)

如果“列”是问题域的核心部分,那么创建一个表来存储它们可能很有用。电子表格通常包含tablescolumnsrowscells,它们之间具有明确定义的关系(单元格属于列,行和列和行属于表格)。这似乎非常适合像MySql这样的关系数据存储。

您可以为列定义创建一个表,其中包含每列的索引,它所属的表的外键以及该列的用户指定的显示名称。

答案 1 :(得分:1)

我会将它们作为CSV文件存储在您的服务器上,或者只是在MySQL中有一个带有CSV文本的附加列的表。由于您的用户将在其电子表格中添加的唯一数据似乎是文本,因此您不必担心字段过大。

答案 2 :(得分:1)

使用Rails和ActiveRecord,您可以为您的应用设置以下模型:

class Table < ActiveRecord::Base #attributes - name:string
  has_many :columns
end

class Column < ActiveRecord::Base #attributes - name:string, number:integer, table_id:integer
  has_many :rows
  belongs_to :table
end

class Row < ActiveRecord:: Base #attributes - number:integer, value:text, column_id: integer
  belongs_to :column
end

因此,创建一个名为“Revenue”的列,它将成为Excel工作表中的第一列,将在ActiveRecord中转换为类似的内容:

@table.columns.create(name: "Revenue", number: 1)

然后,您可以向该列添加值为“$ 1000”的行,如下所示:

@table.columns.find(1).rows.create(value: "$1000")

希望有所帮助!