【问题标题】:Exporting a list to OpenOffice Calc from Delphi从 Delphi 将列表导出到 OpenOffice Calc
【发布时间】:2011-08-09 14:08:18
【问题描述】:

我使用的是 Delphi 7,我想使用自动化而不是使用文件将列表的内容从我的程序导出到 OpenOffice Calc。

任务很简单:创建新文档,遍历行/列并更改单元格数据。

我找到了一些代码,但它不完整,我希望有人准备好一些示例代码来完成这个非常简单的任务。它可以节省我几个小时的尝试时间。

提前致谢!


编辑:我想自动化 OpenOffice Calc 来实现我上面写的。谢谢!

【问题讨论】:

  • OpenOffice Calc 支持以多种格式(HTML、制表符分隔、CSV 等)导入数据。您的问题到底是什么 - 如何从 Delphi 创建导入数据文件,或者如何将该数据导入 Calc,或者如何自动化 Calc 并以编程方式创建电子表格?
  • 如何自动化 Calc 并以编程方式创建电子表格
  • @steve 这个问题的问题是你没有告诉我们你想要什么。
  • 史蒂夫,我帮你问了。希望你喜欢我在顶部而不是底部明确提出问题的方式。
  • 请注意,OOo 3.3 COM 自动化已完全损坏,请改用 OOo 3.2。见openoffice.org/bugzilla/show_bug.cgi?id=117010

标签: delphi automation delphi-7 openoffice.org openoffice-calc


【解决方案1】:

最简单的解决方案是编写 CSV 文件输出,然后在 OpenOffice 中打开。

还有一些库可以编写 OpenOffice Calc 和 Excel 都可以读取的 .XLS 文件。 CSV 很简单,不知道你需要一个例子。创建一个 TStringList,并以逗号分隔的格式向其中添加字符串。保存到文件。

所谓的“程序化”方法涉及 OLE 自动化。

uses
  OleAuto;

var
 mgr,calc,sheets,sheet1,dt,args:Variant;
begin
   args = VarArrayCreate(...);    
   mgr := CreateOleObject('com.sun.star.ServiceManager');
   dt := mgr.createInstance('com.sun.star.frame.Desktop')
   calc = dt.loadComponentFromURL('private:factory/scalc', '_blank', 0, args)
   sheets = calc.getSheets()
   sheet1 = sheets.getByIndex(0)
   ...

【讨论】:

  • 谢谢,但我只想导出它而不保存。我的程序对 Excel 做同样的事情,为了保持一致,我想对 OO 做同样的事情。用户是否保存工作表 - 这是他/她的选择。
  • 还有很多工作要做。为了什么?创建一个临时文件夹,启动程序,稍后,删除临时文件。我不知道 OO 对 OLE 自动化的支持,我知道如何使用 MS Excel 做到这一点,但不知道 OOCalc。
【解决方案2】:

Open Office 支持自动化

见:http://udk.openoffice.org/common/man/tutorial/office_automation.html

Delphi 的开放式 Office 信息可在以下地址找到:
http://development.openoffice.org/#OLE

ooomacros.org 网站好像挂掉了,幸好 Wayback 机器还有一个副本:
http://replay.web.archive.org/20090608051118/http://www.ooomacros.org/dev.php

祝你好运。

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多