Tag: delphi

如何解决一个消息接收过程中的Excel控制代码的错误?

收到消息时,我尝试在Excel工作表上打印某些内容。 我使用Windows 10和Delphi 10西雅图。 这个代码运行良好。 procedure TForm1.Button1Click(Sender: TObject); begin Worksheet.Cells.Item[1, 1] := 1; end; 但是这并不是,因为应用程序正在调度一个input同步调用,所以不能进行一个外向调用。 procedure TForm1.onMessageReceived(var message: TMessage); begin Worksheet.Cells.Item[1, 1] := 1; end; 相同的代码,但根据实施的程序不同的结果。 我该如何解决?

在Delphi 7中使用ADO / ODBC读取Excel工作表

我正在尝试使用Delphi 7从内存中的XLS或XLSX文件读取Excel工作表。尽可能使用自动化来逐个读取单元格,但是当Excel未安装时,我将恢复为使用ADO / ODBC Jet驱动程序。 我用任何一个连接 Provider=Microsoft.Jet.OLEDB.4.0; Data Source=file.xls;Extended Properties="Excel 8.0;Persist Security Info=False;IMEX=1;HDR=No"; Provider=Microsoft.ACE.OLEDB.12.0; Data Source=file.xlsx;Extended Properties="Excel 12.0;Persist Security Info=False;IMEX=1;HDR=No"; 我的问题是,当我使用以下查询: SELECT * FROM [SheetName$] 返回的结果不包含空行或空列,因此如果工作表包含这样的行或列,则会移动以下单元格,并且不会以正确的位置结束。 我需要将表单“按原样”加载,即确切地知道每个值来自哪个单元格的位置。 我尝试通过发出一个表单查询逐个阅读单元格 SELECT F1 FROM `SheetName$A1:A1` 但是现在驱动程序返回一个错误,指出“所选区域之外有数据”。 顺便说一句,我不得不使用反引号来封装名称,因为使用这样的括号[SheetName$A1:A1]给出了语法错误消息。 有没有办法告诉司机如何select工作表,而不是跳过空白? 或者,也许有一种方法来知道每个值从哪个单元格位置返回? 出于内部政策原因(我知道他们是坏的,但我不决定这些),不可能使用第三方库,我真的需要这个从标准的Delphi 7组件工作。

“尝试使用zexmlss时,没有注册zip生成器,文件夹输出被禁用”

我正在尝试使用zexmlss http://neborak.org/zexmlss/index.php?lang=en导出到ODS的Excel。 我编译了这个库,并且在库中包含了Synapse生成器。 现在我试图从代码中使用它: procedure Test; var tz: TZEXMLSS; begin tz := TZEXMLSS.Create(nil); tz.Sheets.Count:=2; tz.Sheets[0].Title:='Test'; with tz.Sheets[0] do begin RowCount:=20; ColCount:=20; Cell[0, 0].Data := 'zexmlss'; end; TZXMLSSave.From(tz).Save('C:\A_EXCEL\test.xlsx'); end 而且我收到错误消息“没有注册的zip生成器,文件夹输出禁用”。 保存到XML完成成功。 如何以及在哪里注册压缩生成器?

Delphi和Excel – 使用自动填充

在delphi10 /西雅图,与Excel 2013 …我试图: 添加一列(列AJ),并设置其标题文本(代码工程) 将列2的值设置为AutoSum(代码有效) 将第2行的计算复制到所有剩余的行。 (不起作用) 在“复制计算”步骤中,我使用自动填充方法。 我收到一个错误“范围类失败的自动填充方法”。 但我不知道为什么…(注意variablesaws是全局设置为活动工作表的。) const TOTAL_TOUCHES = 'AJ'; … var ColumnHeader : OleVariant; SecondRow : OleVariant; ColRange : OleVariant; myAddr, myAddr2 : String; LastCell : string; begin // This routine adds the header 'Total Touches' and then puts an AutoSum in that column for all rows // Set […]

自动化对象不支持Excel自动化“FitToPagesWide”

我试图将Excel工作表导出为PDF,我希望工作表适合页面的宽度。 在做一些研究,似乎我应该使用FitToPagesWide,但是,我无法finddelphi的例子..这是我的代码: procedure TForm1.ExcelToPDF(const AFilename: string); Const XlTypePDF = 0; xlQualityStandard = 0; IncludeDocProperties = true; IgnorePrintAreas = false; LandscapeMode = 2; var P: OleVariant; begin P:= CreateOleObject('Excel.Application'); try P.WorkBooks.Open(AFilename, 3); p.ActiveSheet.Pagesetup.Orientation := LandscapeMode; orientation p.ActiveSheet.PageSetup.FitToPagesWide := 1; // <– not supported by automation object p.ActiveWorkbook.exportAsFixedFormat(xlTypePDF, AFilename, xlQualityStandard, IncludeDocProperties, IgnorePrintAreas ); finally p.Quit; end;

C ++ Builder DBGrid在xlsx文件中导出到Excel

之前,我总是使用TXLSWorkbook和SaveDialog从DBGrid中导出excel(.xls)。 但是,现在导出的数据太大,.xls文件无法填充所有数据。 我试图导出.xlsx文件,但TXLSWorkbook似乎并不支持.xlsx文件。 当我打开.xlsx文件时,错误消息表示文件已损坏。 我错过了什么,或者我必须find另一种方式来导出.xlsx文件? 这是我的代码。 感谢收看。 TXLSWorkbook *WorkBook; IXLSWorksheet *WorkSheet; IXLSRange *Cells; int Row; TDateTime dt=Now(); String date = dt; date = FormatDateTime("yyyymmdd",date); FileName = date+".xls"; WorkBook = new TXLSWorkbook(); WorkSheet = WorkBook->Sheets->Add(); Cells = WorkSheet->Cells; . . . (input item to Cells…) . . . SaveDialog1->FileName = FileName; if( SaveDialog1->Execute() == true ) […]

如何在Delphi中执行ConnectionPoint?

我正在写一个DLL通过它的IDispatch接口与Excel交谈。 在VBA中,我传入一个包含Application.Caller的variables,通过这个variables我通过.pDispVal绘制IDispatch指针。 我想知道的是如何通过该IDispatch指针查询接口。 我想build立一个连接点容器,从那里find一个连接点到Excel。 最终目标是将事情与Excel的计算事件绑定,并能够操纵Excel数据。

使用Delphi在Excel中创build图表的疑问

我想从Delphi 7的Excel表格中绘制图表。我正在使用ExcelXp单元。 现在,我可以在Sheet单元格中编写文本。 我在主窗体应用程序中具有名为“Excel”的TExcel应用程序组件。 我创build工作簿并写第一个工作表的代码: Excel.Connect; Excel.Workbooks.Add(NULL,0); sheet := Excel.Workbooks[1].Worksheets[1]; for i := 1 to 10 do Sheet.Cells[i, 1] := i; 现在我需要在同一张表中绘制图表。 我在谷歌search,但没有find任何相关的。 我得到的只是在其他工作表中创build图表的下一行代码: Excel.Workbooks.Item[1].Sheets.add(EmptyParam, EmptyParam,1,xlchart,0); 没有find任何组件的API。 请帮忙吗?

delphi,导入Excel文件,未声明的标识符

我正在关注关于将Excel文件导入到Delphi的教程 。 当我尝试编译文件时,我一直在收到有关未声明标识符的错误消息。 据我所知,这个表格是名称,应该是在项目中可用的。 我将不胜感激有关修复此错误的任何build议。 unit sample_map; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB, Vcl.AppEvnts, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.StdCtrls, UWebGMapsCommon, System.Generics.Collections, UWebGMaps; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Button1: TButton; DataSource1: TDataSource; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DBNavigator1: TDBNavigator; ApplicationEvents1: TApplicationEvents; StatusBar1: TStatusBar; DBGrid1: […]

确定行是否被用户过滤

我已经写了一个Excel插件。 一切正常,一直到一点。 假设我遍历所有的行,做一些工作…用户可能已经启用了一个filter,以便当前行由于该filter不可见。 如何确定不应该处理哪些数据,因为由于filter而不可见?