再次使用delphi进行openoffice calc
Posted
技术标签:
【中文标题】再次使用delphi进行openoffice calc【英文标题】:openoffice calc with delphi again 【发布时间】:2012-02-14 09:16:35 【问题描述】:我不仅在这里使用搜索引擎,而且厌倦了它;只想要一个简单问题的简单答案(或链接):
如何从 Delphi (7) 代码打开计算表并将 123 写入单元格 A1? (或者任何 calc 的 hello world?)
【问题讨论】:
您可以查看有关如何打开新工作表的答案:***.com/questions/5732253/… 我检查了那个,但它对我来说不够详细 - 我对 openoffice 编程完全陌生。 问题是,没有简单的答案。自动化 OpenOffice 相当复杂。您可以从这里开始:openoffice.org/api 并首先阅读开发人员指南,尤其是第一步、专业 UNO 和高级 UNO。之后,查看 IDL 参考。 -1 这个问题有点懒。没有表现出任何努力。 我不认为它是懒惰的。我认为这很简单。关于努力:我在这里通过结合 cmets 中的知识分享了我关于解决这个问题的知识,不包括你的那些似乎很懒惰并且没有表现出努力的东西(至少阅读关于这个主题的第二条评论,以及关于问题)。 【参考方案1】:你可以看看这个演示: http://sourceforge.net/projects/ooomacros/files/Delphi%20OOo/Version%201.2/Delphi_OOo_v12en.zip/download
我在一个月前测试了 Document 部分(有效),examples.pas 中还有一些电子表格代码。
【讨论】:
谢谢,我用你的例子解决了这个问题。请参阅下面“Calc”版本的答案。【参考方案2】:好的,经过一些研究并使用上面的信息,我非常感谢你,这是一个简单的答案:
使用零件
Uses ComObj, OOoMessages, OOoTools, OOoConstants, OOoXray;
主要代码
打开空白文档,将'hello 123'文本写入a1然后保存到桌面
procedure HelloWorldExample;
var
mentesiOpciok,oSheet,oSheets,myCalc : Variant;
begin
ConnectOpenOffice;
myCalc:=StarDesktop.loadComponentFromURL('private:factory/scalc', '_blank', 0, dummyArray);
oSheets:=myCalc.getSheets;
oSheet:=oSheets.getByIndex(0);
//oSheet.getCellByPosition(0, 0).SetValue(123);
oSheet.getCellByPosition(0, 0).SetFormula('hello 123!');
mentesiOpciok:=CreateProperties(['FilterName', 'MS Excel 97']);
myCalc.storeToURL('file:///C:/Documents and Settings/Zéiksz/Asztal/calcdoc.xls', mentesiOpciok);
showMessage('kész :)');
myCalc.close(true);
DisconnectOpenOffice();
end;
使用 getcellbyposition(...).setvalue 来设置数值,或者使用 setformula 来设置字符串(不太确定,但里面有一个字符串,哈哈)。
彼得
编辑:我在互联网上找到的最有用的信息在这个论坛中: http://www.oooforum.org/forum/viewtopic.phtml?t=4996
【讨论】:
使用 .SetFormula('="hello 123!"');而不是 .SetFormula('hello 123!');以上是关于再次使用delphi进行openoffice calc的主要内容,如果未能解决你的问题,请参考以下文章