Tag: delphi

delphiExcel UDF与变种返回types

我有一个使用ExecuteExcel4Macro注册UDF的加载项。 这工作正常。 只有在当前会话中检测到兼容工作簿时才会注册该加载项。 问题是我想改变当前的UDF从返回只是一个字符,但一个字符或Excel错误。 我发现了一些关于使用types库的文章,但我相信这意味着我的UDF将始终被注册,并且我想在注册时控制它们。 我目前正在注册 ExcelApp.ExecuteExcel4Macro('REGISTER("filepath","add-in-name","AccountDescription","CC","Account Id","My Addin group")'); function AccountDescription ( sAccountId: PChar ) : PChar ; stdcall ; 我正在使用add-in-express来帮助实现Excel自动化。 CC指示该函数接受一个以空字符结尾的string,并期望返回一个以空字符结尾的string。 我不知道我是否可以指定一个变体,所以我可以返回Excel2000.xlErrNa。 编辑:上面修复了函数调用,我忘记了注册。 编辑(2):注册函数中的第四个参数包含udf参数和返回值types。 我不确定如何表示变体。 编辑(3):该dll /项目被称为DynacViews2和DynacViews2.dll源文件中有: exports AccountDescription; 对不起,如果这是一个小碎片。 我想强调的是,这与目前上面的代码一起工作。 问题是试图改变AccountDescription的签名来返回一个OleVariant而不是一个PChar。 更改的原因是我想返回一个string或一个Excel错误。 在线的其他示例(包括add-in-express)显示使用TypeLibrary添加函数并将返回types指定为variant。 这将使用OleVariant创build一个签名,并且可以返回一个string或Excel错误(Excel2000.xlErrNa)。 问题是我正在使用VBA REGISTER函数只添加UDF的,如果工作簿是兼容的。 我可能会错误地解决这个问题。 编辑4: 注册使用示例 – 此链接显示注册使用情况,但不链接到任何微软站点,所以没有解释如何指定参数。

Delphi – 设置Excel单元格背景颜色渐变

Delphi西雅图,Excel 2013年。我需要设置单元格的背景是一个渐变。 如果是单色,我可以设置背景颜色,但是我无法获得渐变的语法。 部分挑战是单元格的渐变是一个IDispatch。 以下代码将设置单个背景颜色。 procedure TForm1.GradientTestClick(Sender: TObject); var oExcel : ExcelApplication; RawDataSheet :_Worksheet; ThisCell : ExcelRange; begin oExcel := CreateOleObject('Excel.Application') as ExcelApplication; oExcel.Visible[LOCALE_USER_DEFAULT] := True; // Add a New Workbook, with a single sheet oExcel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT); // Get the handle to the active Sheet, and insert some dummy data RawDataSheet := oExcel.ActiveSheet as _Worksheet; […]

Delphi 7将XLS(X)转换为CSV

我需要将XLS或XLSX文件转换为csv(分号分隔)。 它可能是一个组件,一个DLL或一个命令行工具,但它必须是无人看pipe,不可见的用户,最好有本地支持,所以不需要安装Excel。

我们的COM库在Excel 2010中“不再支持文件格式”

问这是在黑暗中的一点点,但不幸的是,我们已经用尽了所有其他选项。 我们的软件包的.exe文件公开了一个COM库,许多客户使用Excel电子表格中的VBAfunction。 一个特定的客户最近重新安装Windows,然后升级我们的软件包的版本,现在得到这个错误消息,当试图导入我们的EXE作为COM参考Excel: http : //msdn.microsoft.com/en-us/library /office/gg264377.aspx 有没有人见过这个? 该软件是使用Borland的Delphi 7,但我不知道这是否有很大的不同。 查看registry,我们的COM库的GUID在那里,正确的文件位置。 我们已经用尽了所有常见的技巧来修复我们的软件奇怪的症状。 如果有人有任何想法或已经在自己的环境中看到这个,那么帮助将不胜感激!

导出Excel Inside Service

晚上好! 我已经在Delphi中构build了一个服务应用程序,它应该生成一个excel并每天通过电子邮件发送几次。 基本上,我有我的查询组件configuration良好(SQLQuery,提供者,客户端和数据源),所有的进程正常工作,当我在IDE中debugging服务。 问题是当我尝试安装我的服务,并运行它没有delphi,程序运行,直到这一行: Excel.Application.Workbooks[1].SaveAs(pFileName + '.xls'); 编辑:在上面的情况下,pFileNamevariables提供了“C:\”,这意味着我给完整的path。 我有例外,这里是消息: Workbook类的SaveAs方法失败 这让我觉得问题不在代码中,而是在我的电脑中(某种configuration)。 我用我的用户configuration了服务,所以我拥有所有权限,也可以在服务中生成txt文件,但不能生成xls(excel)文件。 非常感谢!

Excel使用$返回sheetname

我使用ADO和下面的函数读取excel文件 procedure TForm1.ConnectToExcel; var strConn : widestring; begin strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + Edit1.Text + ';' + 'Extended Properties=Excel 8.0;'; AdoConnection1.Connected:=False; AdoConnection1.ConnectionString:=strConn; try AdoConnection1.Open; AdoConnection1.GetTableNames(ComboBox1.Items,True); except ShowMessage('Unable to connect to Excel, make sure the workbook ' + Edit1.Text + ' exist!'); raise; end; end;(*ConnectToExcel*) procedure TForm1.FetchData; begin StatusBar1.SimpleText:=''; if not AdoConnection1.Connected then ConnectToExcel; AdoQuery1.Close; AdoQuery1.SQL.Text:='select […]

delphi – 在Excel中更改图表标题导致AV – 更新完整的示例

我正在使用Delphi Seattle在Excel(2013)中构build和显示图表。 我从一个数据透视表build立我的图表。 图表显示一切正常。 它有一个默认的标题,所以我想改变这一点。 这应该是一个简单的属性更改,但我不断收到AV错误。 当我谷歌,我可以find最接近的事情提到,我需要select图表和/或图表标题之前,我改变它。 [已更新]这是一个工作示例,显示问题。 procedure TForm1.Button1Click(Sender: TObject); var oExcel : ExcelApplication; RawDataSheet :_Worksheet; myChart: Shape; begin oExcel := CreateOleObject('Excel.Application') as ExcelApplication; oExcel.Visible[LOCALE_USER_DEFAULT] := True; // Add a New Workbook, with a single sheet oExcel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT); // Get the handle to the active Sheet, and insert some dummy data RawDataSheet := oExcel.ActiveSheet […]

Exceltypes库/delphi2009 /坏variablestypes

我们刚从Delphi 2006更新了一个使用Exceltypes库到Delphi 2009的应用程序。我发现现在几乎没有任何东西可用 – 几乎所有对Excel的调用都会产生一个消息“Bad variable type。”。 例如,我们可以这样做:Sheet.Cells.Item [Row,Column] .Value:=其中Sheet是ExcelWorksheet的值,Value是Variant。 我们在堆栈中看到的下一件事是调用Variants中的_DispInvoke,然后调用ComObj。 我究竟做错了什么?

使用Delphi在Excel工作表的每一行中插入图像

我的Delphi 6程序需要在Excel表格的每一行上放置一个图像。 我可以插入一个图片到一个固定的位置,从另一个post读取的东西。 procedure insertImages(ActiveSheet: OleVariant; ImageFilePath: String; ImageHeight, PictureTop, PictureLeft: Integer); var Picture: OleVariant; begin try Picture := ActiveSheet.Pictures.Insert(ImageFilePath); Picture.Width := ImageHeight * Picture.Width /Picture.Height; Picture.Height := ImageHeight; Picture.ShapeRange.Left := PictureLeft; Picture.ShapeRange.Top := PictureTop; Picture.Placement := xlMove; except end; //try end; //insertImages; 上面的代码工作正常,但我无法通过PictureTop和PictureLeft参数,使得每行的第二列有不同的图像? 如何获得特定单元格的顶部和左侧值? 还是有更好的方法来做到这一点? 请帮忙。

在应用程序结束后保持Excel打开(Delphi自动化)

我正在使用Delphi 2007的ExcelXP组件来连接到MS Excel,并在工作表中填充一些字段。 这是应该的,我可以修改所有我想要的工作表。 但是,我希望Excel在应用程序结束后保持打开状态,但前提是Excel中有打开的工作表。 我可以通过ExcelApplication.Workbooks.Count获取已打开的工作簿的数量,因此在应用程序结束时检查是否打开任何工作簿,以及在OnDestroy或类似工具中closuresExcel时,将是一件容易的事情。 现在我陷入了一种情况,即在Excelclosures的情况下,无论在应用程序结束时是否有打开的工作簿。 不是由于任何。 .Disconnect或者.Quit呼叫,当我把它们全部拿出来的时候,它仍然是这样的; 一旦我的应用程序closures,Excel仍然closures。 有没有人有任何想法,如果有开放的工作簿,我可以让Excel保持开放,并在没有开放的工作簿时closures它? 更新:我的TExcelApplication的AutoQuit属性被设置为True 。 事实certificate这是一直存在的问题。