Tag: delphi

PHP + Delphi + FireBird

我有一个问题来检索大量的数据与PHP +delphi9 +火鸟。 应用程序屏幕截图我在Delphi应用程序中有一个名为“检查”的button,当我点击button生成PHP Excel文件时,通过根据函数参数中指定的条件从Firebird中检索数据。 delphi程序: procedure TfrmTransactions.dxBarButton2Click(Sender: TObject); //action click var ids: string; DateFrom, DateTo: string; begin ids:='1'; datefrom := FormatDateTime('yyyy"/"mm"/"dd', dateStart.EditValue); dateto := FormatDateTime('yyyy"/"mm"/"dd', dateEnd.EditValue); DBModule.SendRequest('checkFlow=' + Ids + '&startdate=' + datefrom + '&enddate=' + dateto, 'CheckFlow.xls'); end; 注意:*上面的代码通过在excelexport.php文件中调用php方法checkFlow来执行,并生成'CheckFlow.xls'* checkFlow是excelexport.php中的一个函数,参考下面的文件。 问题: 我在PHP中执行了这个函数并进行了testing,对于大量的数据检索是很好的,但是当我整合到Delphibutton的时候,它不适用于大量的数据,但是如果我通过Delphi检索小量的数据生成excel文件。 PHP从Firebird获取数据并插入到sql server表中的文件: <?php require_once('class.pdo.firebird.php'); require_once('config.php'); require_once('xml.php'); function insertCheckFlowProduBanco($startdate,$enddate){ try{ $x=0; $dateInArray […]

Delphi XE3 Excel不像Delphi XE那样工作

我刚安装了Delphi XE3。 以前的版本是XE。 我的程序生成Excel文件(我正在使用Office 2013)。 我导入了Exceltypes库。 当我使用Delphi XE,那么这个代码正在工作。 当我使用Delphi XE3时,我得到了一个错误消息,像这样:'Horizo​​ntalAlignment属性不能设置'在XE3中更改什么? 这里是代码: VAR Myworkbook, range, excelapp : olevariant; Begin ExcelApp:=CreateOleObject('Excel.Application'); ExcelApp.Visible:=true; MyWorkbook:=ExcelApp.Workbooks.Add; MyWorkbook.Activate; MyWorkbook.Activesheet.PageSetup.Orientation := xlPortrait; MyWorkbook.Activesheet.PageSetup.PaperSize := xlPaperA4; MyWorkbook.Activesheet.PageSetup.LeftMargin := CMtoPT(1); MyWorkbook.Activesheet.PageSetup.RightMargin := CMtoPT(1); MyWorkbook.Activesheet.PageSetup.TopMargin := cmtopt(1.5); MyWorkbook.Activesheet.PageSetup.BottomMargin := cmtopt(1.5); Range:=ExcelApp.Range['A1','A1']; Range.HorizontalAlignment := xlLeft; Range.VerticalAlignment := xlCenter; END

将应用程序数据导出为ex​​cel适用于某些用户,但不适用于其他用户

我有一个遗留应用程序(delphi5),允许用户导出数据到Excel。 据我所知,这个应用程序适用于Office 2013之前的所有用户。我们最近开始推出Office 365/2013 – 得到O365后,一些用户不再能够将数据导出到Excel。 就像我们可以告诉的那样,对于这些用户而言,没有任何事情发生(Excel没有获得焦点,没有新的工作表/选项卡被添加到现有的实例,如果没有运行,Excel不会启动)。 其他使用O365的用户似乎对应用程序没有任何问题。 几个月前,我们有一个用户遇到这个问题后,收到Office 2013(非O365)。 在任何编码/重大研究发生之前,用户被给了一个不同的硬盘驱动器(我想这是她以前的硬盘驱动器,但不是100%肯定),瞧,一切都为她工作。 这使我相信这可能是一个registry设置或其他configuration问题。 有没有人知道任何可能导致/解决这个问题的registry设置/应用程序configuration设置,我们是否必须重新编写导出数据的逻辑,还是有其他的东西我没有想到? 作为参考,这里是执行导出到Excel的代码片段(我添加了“ExcelApplication1.Connect;”如下所示http://www.djpate.freeserve.co.uk/AutoExcl.htm#StartingExcel – 但是,没有解决问题): interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls,// excel_tlb, Forms, Dialogs, checklst, Buttons, ToolWin, ComCtrls, Menus, Grids, DBGrids, ExtCtrls, Db, DBTables, DBClient, About, Report, IniFiles, Cdberr32, Ulogin32, ComObj, olectnrs, Find, ImgList, excel97, OleServer, clipbrd, AppEvnts; . . . […]

delphi,当在Excel Interop Worksheets集合上使用for循环时,我该怎么做“没有GetEnumerator存在”错误?

我试图编写一个Delphi程序,将通过Excel文件中的每个工作表循环,并格式化一些单元格。 不过,我在尝试使用Workbook.Worksheets集合中的for-in循环时收到错误。 错误具体是: [DCC错误] Office.pas(36):E2431 for-in语句无法对集合types“表格”操作,因为“表格”不包含“GetEnumerator”的成员,或者无法访问 这发生的代码行是: for Worksheet in Workbook.Worksheets do 工作表和工作簿的定义如下: var ExcelApp: ExcelApplication; var Workbook: ExcelWorkbook; var Worksheet: ExcelWorksheet; 我将这个代码从C#移植到Delphi,在其中工作。 有谁知道为什么我会得到这个GetEnumerator错误? 我正在使用Office 2007 Excel Interop文件和Embarcadero®Delphi®2010版本14.0.3593.25826。 提前致谢。

该应用程序称为一个接口,编组为一个不同的线程

我正在写一个与Excel通信的delphi应用程序。 我注意到的一件事是,如果我在Excel工作簿对象上调用Save方法,它可能会挂起,因为Excel有一个打开的用户对话框。 我正在使用后期绑定。 我想我的应用程序能够注意到,当保存需要几秒钟,然后采取一些行动,如显示一个对话框,告诉这是发生了什么。 我觉得这很容易。 所有我需要做的是创build一个线程,调用保存并让该线程调用Excel的保存例程。 如果时间太长,我可以采取一些行动。 procedure TOfficeConnect.Save; var Thread:TOfficeHangThread; begin // spin off as thread so we can control timeout Thread:=TOfficeSaveThread.Create(m_vExcelWorkbook); if WaitForSingleObject(Thread.Handle, 5 {s} * 1000 {ms/s})=WAIT_TIMEOUT then begin Thread.FreeOnTerminate:=true; raise Exception.Create(_('The Office spreadsheet program seems to be busy.')); end; Thread.Free; end; TOfficeSaveThread = class(TThread) private { Private declarations } m_vExcelWorkbook:variant; protected […]

在Delphi 6中如何在运行时将字段添加到ADO Recordset?

我有一个关于ADOlogging集的简单问题。 我有两个_RecordSetfunction,我比较他们的差异。 代码如下。 function TPT101_ANAF.DataSetKarsilastir(Eski: _Recordset; Yeni: _Recordset) :_Recordset; var varBookMark:OleVariant; begin Eski.MoveFirst; Yeni.MoveFirst; while not Yeni.EOF do begin Eski.Find('SİCİL = '''+Yeni.Fields['SİCİL'].Value+'''',0, adSearchForward, adBookmarkFirst); If (Eski.BOF = True) OR (Eski.EOF = True) Then begin PT101FDM.EXCELSET.Append; **/* i want to add differences to EXCELSET (From Yeni RecordSet) /* but the disconnected ADODataset error raising.** PT101FDM.EXCELSET.Insert; end; […]

使用Delphi 6将图片添加到Excel表格中

我用Delphi 6创build了一个excel表格。现在我必须添加一张图片到我的表格中。 任何人都知道如何做到这一点?

如何启用Excel工作表中的首行AutoFilter?

这是我生成Excel 2007 XLSX文件的小testing应用程序: uses Excel2007; function CreateExportExcelWorkbook(AApp: ExcelApplication; ALCID: Integer): ExcelWorkbook; var OldDefaultSaveFormat: XlFileFormat; begin OldDefaultSaveFormat := AApp.DefaultSaveFormat; AApp.DefaultSaveFormat := xlOpenXMLWorkbook; try Result := AApp.Workbooks.Add(xlWBATWorksheet, ALCID); finally AApp.DefaultSaveFormat := OldDefaultSaveFormat; end; end; procedure FixTopRows(AApp: ExcelApplication; ARowCount: Integer); var ActiveWindow: Window; begin ActiveWindow := AApp.ActiveWindow; ActiveWindow.SplitColumn := 0; ActiveWindow.SplitRow := ARowCount; ActiveWindow.FreezePanes := True; end; procedure […]

Excel自动化在C ++ Builder XE7中不起作用

我正在尝试使用下面的代码在RAD Studio XE7中从C ++ Builder打开一个.xlsx文件: #include "ComObj.hpp" Variant Excel = CreateOleObject("Excel.Application"); Variant Books = Excel.OlePropertyGet("Workbooks"); Excel.OlePropertySet("Visible", true); // An escape character is missing but the problem remains Books.OleProcedure("Open", L"D:\1.xlsx"); // exception here 但最后一行导致exception与消息: Project2.exe引发exception类EOleException,并显示消息'ссталению,намнеудалосьнастифайлИСТИНА.xlsx。 Возможно,онбылперемещен,переименованилиудален?' 俄语翻译: Project2.exe引发exception类EOleException消息'不幸的是,我们无法find文件TRUE.xlsx。 它可能已被移动,重命名或删除?“。 屏幕与源中断的地方 在Delphi中的代码似乎正常工作: uses ComObj; var Excel, Books: Variant; begin Excel := CreateOleObject('Excel.Application'); Books := Excel.Workbooks; Excel.Visible := […]

Excel Application.Windows.Count返回0

我使用Windows 10,delphi柏林和Microsoft Office 2007.我尝试获取打开的Excel窗口的数量。 当我下载Excel文件并打开它时,将会运行一个分离的Excel,因此只有一个工作簿存在于一个Excel窗口中。 我导入了Microsoft Office 12.0 Object Library并编写了2个程序。 Button1Click适用于tExcelApplication,Button2Click适用于CreateOleObject('excel.application')。 我运行Excel后,前者效果很好,但Count只是在编辑器中被识别为错误,后者返回0。 我如何删除恼人的错误信息或让_Excel工作? type TForm1 = class(TForm) ExcelApplication1: TExcelApplication; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := IntToStr(ExcelApplication1.Windows.Count); end; procedure TForm1.Button2Click(Sender: TObject); var _Excel: Variant; begin _Excel := CreateOleObject('excel.application'); Button2.Caption := _Excel.windows.count; end;