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

blu*_*lds 6 open-source smalltalk spreadsheet

如果不存在与此描述匹配的内容,我能得到的最接近的是什么?

Her*_*nán 5

选项 1) 在 Pharo 1.4 或 2.0

我已经使用 SGrid(又名 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.
Run Code Online (Sandbox Code Playgroud)

要与网格交互(例如在任何单元格上添加右键菜单),您必须解决与引入 SmalltalkEditor 类相关的问题。以下代码使用 GridMorph 和 flickr API 打开表格图片查看器(flickr API 用法基于此演员表):

| 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.
Run Code Online (Sandbox Code Playgroud)

选项 2) 在 Pharo 1.4 或 2.0

有一个 MorphTreeMorph 类,其中包含一个带有多个示例网格的注释。

例子

SimpleGridExample new open
ClassListExample new openOn: Collection.
Run Code Online (Sandbox Code Playgroud)

选项 3) 在吱吱声中:

有一个名为Skeleton的项目——使用 eToys 的简易模拟系统,您可以从以下网址访问其代码:http : //source.squeak.org/etoysinbox.html

安装

Installer squeak    
    project: 'etoysinbox';
    install: 'Skeleton'.
Run Code Online (Sandbox Code Playgroud)

例子

SkSheet example "Move the red circle around"
Run Code Online (Sandbox Code Playgroud)

我没用过,不过好像有基本的公式支持。


blu*_*lds 1

看来这个问题的答案是“不”。