Tag: delphi

自动化应用程序退出时,如何避免Excel显示“保存”对话框

我有一个用Delphi编写的excel自动化应用程序,它访问一个给定的excel工作簿,并提取应用一些内部逻辑表单的不同数据。 它在Excel 2003和2007上已经运行了很多年。 最近有些用户使用Excel 2010.在这些用户上,当我的应用程序退出时,Excel显示一个对话框,要求用户保存未修改的工作表。 该消息说了一些有关公式的版本将被保存在一个新的2010年格式。 对不起,我没有确切的词汇,因为它不是英文办公软件包。 我的应用程序如何防止Excel 2010显示这个恼人的和无用的框? 大多数用户使用Excel 2007,所以我的应用程序需要处理的大部分文件(无论运行我的应用程序的用户的实际Excel版本)是否都是这种格式,并且将来会这样,因此将所有文件不是一个选项。

在Delphi 7中使用TExcelWorkBook SaveAs方法时出现Ole 800A03EC错误

我想打开Excel 2003工作簿,并保存为其他东西,例如Excel 95.我使用下面的代码: XLSApp:=TExcelApplication.Create(Self); XLSApp.Workbooks.Open(SomeFileName,NULL,false,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,defaultlcid); XLSWB:=TExcelWorkbook.Create(XLSApp); XLSWB.ConnectTo(XLSApp.Workbooks.Item[1]); XLSWB.SaveCopyAs(ExtractFilePath(edTable.Text)+'temp.xls'); XLSWB.SaveAs(SomeOtherFileName,xlExcel7,EmptyParam,EmptyParam,False,False,xlNoChange,xlUserResolution,False,EmptyParam,EmptyParam,EmptyParam,DefaultLCID); 不幸的是,这个代码在客户端计算机上给出“Ole 800A03EC”,而它在我的工作。 请注意,我已经安装了Office 2007,并且他拥有Office 2003 SP3。 任何帮助将非常感激。

运行带有嵌套var访问的Delphi程序后,Excel.exe仍然会被加载

我遇到了一个奇怪的问题, 为什么excel.exe在运行delphi客户端自动化程序后仍然被加载? 题。 问题是更深入一步。 我已经得到了Delphi 7编写的代码,并将其升级到XE2。 这样做后,我有同样的问题在XE2和build议的解决scheme在简单的testing应用程序工作,只要我使用这些行Excel.exe保持加载程序退出后: fExcel: Variant; // Tried both as a field of a class and global variable fExcel := CreateOleObject('Excel.Application'); try fExcel.Workbooks.Open(srcPathName); fExcel.DisplayAlerts := False; … // Offending lines fExcel.ActiveWorkBook.ActiveSheet.Range[ // fExcel.ActiveWorkBook.ActiveSheet.Cells[3, 2], // fExcel.ActiveWorkBook.ActiveSheet.Cells[3+i,1+XL_PT_Tip_FieldCount] // ].Formula := VarArr; // … fExcel.ActiveWorkBook.SaveAs(tgtPathName, -4143, '', '', False, False); fExcel.ActiveWorkBook.Close; finally fExcel.Application.Quit; fExcel.Quit; […]

如何在没有安装Excel的情况下将DBGrid导出为OOXML格式(Excel 2007/2010格式)?

我有一个Delphi 2007 DBGrid,我想允许用户保存在新的Excel格式( OOXML ),但我的标准是,用户不需要安装Excel。 有没有人知道任何已经做到这一点的组件? 是的,我已经search了,但我还没有find任何东西。

在工作表范围内定义名称的表名是什么?

我正在尝试使用ODBC查询工作表范围中使用SQL定义的名称。 我已经知道这个工作: SELECT * FROM [worksheet1$] — Query a whole worksheet SELECT * FROM [worksheet1$A1:C10] — Query A1:C10 of a worksheet SELECT * FROM myname — Query a workbook scoped defined name 请注意, myname是工作簿作用域,而不是工作表作用域。 我会期望像Excel公式中的东西一样适用于ODBC表名: SELECT * FROM worksheet1!myname — Query a worksheet scoped defined name 然而,这不起作用,我尝试了一些这样的语法变化。 这是可能的,如果是,使用什么语法? 对于Delphi开发人员的注意事项: A1:C10语法在TADOQuery造成麻烦,必须将ParamCheck设置为False才能使其工作。 更新: 我正在使用Microsoft Office 2007附带的Microsoft Excel […]

当从TOleContainer提取文档的数据时,DoVerb(ovInplaceActivate)崩溃,出现各种错误消息

一个客户在使用OLE处理Office文档时,会遇到与我们的软件有些奇怪的行为。 当一些派生的TOleContainer类的实例尝试通过DoVerb(ovInPlaceActivate)调用激活OLE对象时,代码崩溃。 有各种错误消息,包括: (0x80030002) %1找不到。 (0x80030005) 访问被拒绝。 (0x800706BE) 远程过程调用失败。 看我的代码: function TfrmOleOffice.SaveToStream: TStream; var LOleContainerState: TObjectState; LModified: Boolean; begin Result := TMemoryStream.Create; if IsEmpty and OleOfficeAvailable then exit; if OleOfficeAvailable then begin LOleContainerStateBefore := FOleContainer.State; LModified := FOleContainer.Modified; // 'FOleContainer.Modified' could be changed by 'FOleContainer.Close' FOleContainer.Close; FValue.Position := 0; if LModified then // otherwise, take […]

如何在工作簿的最后一个工作表之后添加工作表?

我正在用Delphi生成一个Excel工作表,但是我面对的问题是,当我使用这个代码时: Workbook.Sheets.Add; 新工作表添加在当前选定的工作表之前: 有谁知道如何添加工作表的最后一张工作表后?

如何设置Excel列types和格式?

我正在将数据从CxDBGrid导出到Excel文件。 我能够创build文件并在其中复制数据,但是我在列格式上遇到了麻烦。 由于我从数据库中提取数据,所以我希望电子表格能够反映types:NUMBER,VARCHAR2,DATE等等。 我直观地创build了一个macros,去寻找VBA代码,并将其复制到Delphi项目中: sheet.Columns[K+2].NumberFormat := '0,000'; //Number sheet.Columns[K+2].NumberFormat := '@'; //Text sheet.Columns[K+2].NumberFormat := 'm/d/yyyy'; //Date 数字格式化在大多数情况下都能正常工作,但其他两种则不能。 当我打开生成的文件时,文本列显示为types“自定义”,每个单元显示“-64”。 如果我去编辑单元格,正确的值实际上是在那里。 date是另一个问题:数据库的格式是dd / mm / yyyy,如果我按照原样将它提供给Excel,它会变得混乱。 我试图设置正确的格式,但然后Excel不能识别它。 任何线索? 我也设置列宽。 这工作完美无瑕。

我如何识别MS Excel对象types?

我正在使用后期绑定的OLE自动化来处理Excel。 问题是我不知道如何使用Selection返回的值,因为我不知道它是什么types… 我怎样才能确定它返回给我什么样的对象? 我希望有一个types的名字…. 或者我必须通过一个我期待的价值清单?

将数据从DBGrid导出到Excel

我想知道是否有人可以将数据从DBGrid导出到Excel? 我正在使用Delphi 7,Excel 2007和ADO。 任何帮助将不胜感激。