Smalltalk中是否有用于生产级别工作的开源电子表格实现?

时间:2011-01-12 21:11:01

标签: open-source spreadsheet smalltalk

如果没有与此描述匹配的内容,那么我能得到的最接近的是什么?

4 个答案:

答案 0 :(得分:4)

选项1)在Pharo 1.4或2.0中

我使用了SGrid(a.k.a GridMorph)来显示数百行而没有出现重大性能问题。

安装

菜单 - >工具 - >配置浏览器 - > MorphicGrid(安装)

示例

| matrix grid rows cols |

rows := 2.
cols := 3.
matrix := Matrix rows: rows columns: cols.
1 to: rows do: [ : r |  
1 to: cols do: [ : c |
    matrix at: r at: c put: SmallInteger maxVal atRandom ] ].
grid := (GridMorph 
    from: matrix
    performing: {
        'Heading 1' -> #asNumber .
        'Heading 2' -> #asNumber .
        'Heading 3' -> #asNumber }) 
    title: 'GridMorph Example'.
grid openInWorld.

要与网格交互(例如在任何单元格上显示右键菜单),您将不得不修复与SmalltalkEditor类的引入相关的问题。 以下代码使用GridMorph和flickr API打开表格图片查看器(flickr API用法基于this cast):

| xmlStream xmlDoc photos |
xmlStream := 'http://api.flickr.com/services/feeds/photos_public.gne?id=14577317@N06&lang=en-us&format=rss_200' asUrl retrieveContents readStream.
xmlDoc := XMLDOMParser parseDocumentFrom: xmlStream.
photos := OrderedCollection new.
xmlDoc allElementsNamed: #item do: [ : item| | thumbUrl photoUrl |
    thumbUrl := ((item findElementNamed: #media:thumbnail) attributeAt: #url) asUrl.
    photoUrl := ((item findElementNamed: #media:content) attributeAt: #url) asUrl.
    photos add: (photoUrl -> (Form fromBinaryStream: thumbUrl retrieveContents readStream)) ].
((GridMorph
        from: photos
        performing: {'URL' -> [: assoc | assoc key asString ] . 'Picture' -> [: assoc | assoc value asMorph ]})
        title: 'Flickr GridMorph Example') openInWorld.

选项2)在Pharo 1.4或2.0中

有一个类MorphTreeMorph,它包含一个带有几个示例网格的注释。

示例

SimpleGridExample new open
ClassListExample new openOn: Collection.

选项3)在Squeak中:

有一个名为Skeleton – easy simulation system的项目,它使用eToys,您可以从以下位置访问其代码:http://source.squeak.org/etoysinbox.html

<强>安装

Installer squeak    
    project: 'etoysinbox';
    install: 'Skeleton'.

示例

SkSheet example "Move the red circle around"

我没有使用它,但它似乎有基本的公式支持。

答案 1 :(得分:2)

汉斯 - 马丁·莫斯纳(Hans-Martin Mosner)在这里开始了一个...... http://smalltalkhub.com/#!/~StephaneDucasse/PetitsBazars/packages/Spreadsheet
在Pharo这个你可以做...

sheet := SpreadsheetGridMorph new openInWindow.
sheet cellStringAt: 1@1 put: '10'.
sheet cellStringAt: 1@2 put: '20'.
sheet cellStringAt: 1@3 put: '=A1+A2'.
sheet cellStringAt: 1@3. "-->30"

答案 2 :(得分:1)

我最喜欢不受行和列的限制,并且喜欢对象浏览器和检查器的可见性。

我不确定你在这里尝试解决什么问题。

  • smalltalk环境是比电子表格更强大的建模环境,更容易用于复杂模型。在那里,您可能需要基于行和列的查看器。 Glamour提供轻松构建浏览器的解决方案。它是穆斯的一部分。
  • 电子表格适用于小型模型的原型设计,但在生产环境中存在严重缺陷:可测试性,多用户支持,性能。
  • 在生产环境中,更常使用更简单的网格。

在与专家配对编程几个小时的同时,应该学习一个小磁场环境。使用它的方式与使用Eclipse,Visual Studio,XCode或Delphi等IDE非常不同。

如果你想筛选大量数据并找到有趣的对象,Moose在可视化数据方面提供了很多帮助。它专注于软件再造,但是蒙德里安同样适用于财务数据。

答案 3 :(得分:1)

这个问题的答案似乎是“不”。