Delphi能否插入Excel 2007/2010表格
我有一个DelphiXe2应用程序,它将大量数据转储到Excel中 当我们使用Excel 2010时,用户询问是否可以将该数据格式化为表格,即使用标题行中的内置过滤器和搜索工具 从VBA来看,它应该相当简单Delphi能否插入Excel 2007/2010表格,delphi,vba,delphi-xe2,excel-2010,Delphi,Vba,Delphi Xe2,Excel 2010,我有一个DelphiXe2应用程序,它将大量数据转储到Excel中 当我们使用Excel 2010时,用户询问是否可以将该数据格式化为表格,即使用标题行中的内置过滤器和搜索工具 从VBA来看,它应该相当简单 ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A1:$Z$999"), , xlYes).Name = "fee" 1) 我知道要转换的范围 2) TExcelApplication和TExcelWorkbook都将ActiveSheet列
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A1:$Z$999"), , xlYes).Name = "fee"
1) 我知道要转换的范围
2) TExcelApplication和TExcelWorkbook都将ActiveSheet列为可用属性
问题出在这里
3) 然后,这两个列表都不会列出可用的对象
我假设这是因为Delphi本机只支持Excel2000或Excel2003。有什么办法可以解决这个问题吗?我认为这是因为ActiveSheet是作为IDispatch公开的。您可以先键入:
var
w: ExcelWorksheet;
begin
w := ExcelApplication1{....}.ActiveSheet as ExcelWorksheet;
w.ListObjects.DoAsYouWish;
如果这确实是一个根本不可用的新功能,您可以导入一个更新的类型库。您可能希望首先卸载包含当前TExcelApplication对象的包。之后:
- 转到
->组件
导入组件…
- 选择“导入类型库”,然后单击“下一步”
- 选择正确的类型库,我认为它的名称为
MicrosoftExcel14.0ObjectLibrary
- 选择要安装组件的调色板页面,或键入新页面,如Office 2010
- 选中框
,它将为您提供一个TExcelApplication组件generatecomponentwrapper
- 单击下一步
- 选择“安装到新软件包中”,然后单击“下一步”
- 选择文件名并键入包名(Office 2010)李>
- 单击“完成”
c:\RAD Studio\9.0\OCX\Servers\pas2010\Excel2010.pas
因此,Delphi为您提供了3个设计时包:
- c:\RAD Studio\9.0\bin\dcloffice
160.bpl2010
- c:\RAD Studio\9.0\bin\dcloffice
160.bpl2K
- c:\RAD Studio\9.0\bin\dcloffice
160.bplxp
ExcelXP.pas
和Excel2000.pas
中缺少了ListObjects
作为@Arioch',下面提到的是XE2附带的Office2010.bpl-它只是没有安装到包列表中!谢谢你。为什么2010年的bpl包括但没有安装?我以为支持被冻结了!与VBA版本相比,加载项dclOffice2010似乎需要更多的参数。它需要(源类型、源、链接源、ObjectHashHeaders、目标、表样式名)。我认为目的地是唯一真正的新目的地。有什么想法吗?因为你需要兼容性!如果你发布了新版本,突然有一半的客户无法再使用他们版本的MS Office,这会伤害你。您需要新功能—显式更新库并降低兼容性。如果您不这样做-您只需留下状态quoNo的想法,除了阅读Office 2010中的VBA帮助。通常,大多数参数都可以用默认存根值填充,比如nil或CURRENT_LOCALE,或者类似我在这里需要的内容:。大部分是空的