Tag: delphi

Delphi – Excel行通过ADO Query获取

我有以下的Excel文件 我将AdoConnection.ConnectionString设置为 AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' +aFileName + ';' + 'Extended Properties=Excel 8.0;'; 其中aFileName是Excel文件名。 之后,使用ADOQuery组件(连接设置为AdoConnection),我执行“select * from [Sheet1 $]”。 问题是行16802和17179不在查询结果中,我不知道为什么。 表格中的所有字段都设置为常规。 我正在使用Delphi 7。 你有什么想法? LE:AdoQuery中所有字段的types都是WideString。 查询中只显示最后2列中的值为“绿色标志”的行。 我不是Excel中的天才,但查询不应该获取表单中存在的所有数据?

Delphi 6 – 从delphi应用程序创buildExcel图表 – 在同一页面上的数据和图表

我需要基于表中的一些数据在Excel应用程序的Excel中创build一个图表。 我创build了Excel工作表,并从表中填充了n行数据。 现在我需要根据数据制作图表。 我们必须添加两个Legent条目(类别) – D5:D15和E5:E15和一个水平(类别)轴标签-F5:F15 我尝试了以下来获得这个。 当执行时,我得到了错误信息 自动化对象不支持方法'setsourcedata'。 我尝试了SeriesCollection.item.value方法,然后系统给出了相同的消息。 procedure TForm1.Make_a_Chart; var Sheets,Ch1 : Variant; begin ch1 := XLApp.ActiveWorkBook.Sheets[1].ChartObjects.Add ( 500,100,400,200 ); // creates a new chart in the specified Sheets := XLApp.Sheets; ch1.Chart.ChartWizard ( Sheets.Item['Delphi Data'].Range['D5:D15'], // 1 Source xlBarStacked, // 2 The chart type. 8, // 3 Format – The option number […]

获取ExcelRange对象的坐标

在Excel的COM API中: 给定一个ExcelRange对象,我将如何确定其中包含哪些行和列? 我不想要范围的内容 ,只是范围的“坐标”,最好是整数。 我没有注意到ExcelRange同时具有Row和Column属性,但是这些仅指示范围的左上angular的行和列。 注意:我正在使用Delphi,但是这个问题可能与通过COM使用Excel的任何语言相关,所以使用Delphi进行回答是没有必要的。

如何格式化剪贴板中的行和列来粘贴就像来自Excel?

我正在使用一堆网格,这些网格不支持像Excel那样的表格布局复制行和列。 我们需要能够从网格中复制一些行和列,然后将它们粘贴到一个Outlook格式的正确alignment的列中。 如果你从Excel复制,它很好。 如果我从网格复制,我得到制表符分隔的数据,这是行不通的。 此外,字体不像Courier那样等宽,因此将数据填充到相同数量的字符也不起作用。 我真的很想知道Excel如何设置额外的格式到剪贴板。 顺便说一句,我用delphi,但任何build议表示赞赏。 编辑 :我们不想先通过Excel …我们想直接从网格到剪贴板,然后到电子邮件。 谢谢! 巴特

OLE Excel输出中的国际date格式问题

在目前使用Excel的产品中,电子表格是使用Delphi的OLE生成的。 电子表格中包含许多应用程序从系统设置中加载shortdate格式并将其应用于单元格的date。 除非系统格式设置为至less俄语,巴什基尔,鞑靼语,雅库特,哈萨克和乌兹别克语(可能还有其他我没有尝试过的语言)之一,否则这种做法是完美的。 代码是 – xlws.Cells[irow,icol] := ActivityData.Target_Date; xlvalidrange := xlws.Range[xlws.Cells[irow,icol],xlws.Cells[irow,icol]]; xlvalidrange.NumberFormat:= LocShortDateFormat; 在这种情况下(同时debugging时)ActivityData.Target_Date是41192,这是Excel存储date和时间的格式,LocShortDateFormat等于“dd.MM.yyyy”。 这与俄罗斯的Windows中显示的商店date格式相匹配,并以代码方式以编程方式检索, LocShortDateFormat := ShortDateFormat; 以这种格式打开电子表格显示消息 – Excel在Spreadsheet.xlsx中发现无法读取的内容是否要恢复此工作簿的内容? 这样做的数据显示简单的单元格中没有NO格式的数字41192。 更奇怪的是,手动应用格式string“dd.MM.yyyy”,然后在单元格中显示“dd.MM.yyyy”而不是数据。 这同样适用于任何标准date/时间string格式化字符。 通过select“date”类别和相应types作为格式,数据可以手动更改为date格式,然后正确显示,所以这不是数据问题,而是格式string。 Excel手动select正确的date格式时使用的格式string是ДД.ММ.ГГГГ – 手动更改debugging时使用的格式string会在生成的电子表格中产生正确的输出,并且不可读的内容消息将消失。 奇怪的是,中文,日文,塞尔维亚文和马其顿文(作为非英文字符集的样本)都使用标准的date/时间格式字符。 在Excel本身中,即使电子表格是新的,并且还没有以编程方式创build,即在Excel应用程序内创build的新电子表格,标准字符似乎也不能正常工作。 这种情况下,它似乎不是一个Delphi或Windows的问题(C#Windows窗体没有问题,正确格式化date使用标准字符,即使俄语区域设置),但它仍然留下如何得到返回正确的格式Delphi中的string。 我并不热衷于对已知有问题的语言环境进行一系列有条件的“if”语句testing,但这似乎是基于迄今为止我所做的研究来处理这个问题的唯一方法。 有没有办法让Excel使用通过OLE的本地date格式化,而不提供格式化string,或者获取stringExcel用于格式化本地化date以便提供正确格式的string?

ODBC Excel驱动程序:来自外部数据库驱动程序的意外错误

自10月10日Windows更新以来,ODBC Excel驱动程序已停止工作。 尝试读取文件时遇到以下错误: “来自外部数据库驱动程序的意外错误(1)” 我们在Delphi中使用带有以下连接string的ADO连接打开Excel文件: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"; 我可以通过切换到Microsoft.ACE.OLEDB.12.0来工作,但为了这样做,我们所有的客户将不得不在他们使用我们的软件的所有计算机上安装Microsoft Access数据库引擎可再发行组件。 有没有人有另一种解决scheme或解决方法? 提前致谢。

delphiXE5 64位DLL的Excel 2013 64位 – 奇怪的行为

我正在尝试在Delphi XE5中创build一个64位DLL,以便与Excel 2013的64位版本进行通信,但是没有任何成功。 把问题分解成最简单的forms,我写了这个简单的代码: library test64; function xx(x : double) : double; stdcall; begin Result := x*2; end; exports xx; end. 我知道stdcall; 不需要,但保持与32位兼容(它在32位完美工作)。 删除它不会改变一个事物,它只是被忽略。 并将其编译到Win64平台。 在Excel 2013 x64中声明了这个函数,如下所示: Declare PtrSafe Function xx Lib "my path here\Win64\Debug\dll\test64.dll" (ByVal x As Double) As Double 现在如果单元格A2 = XX(A1),它总是给我零。 A1中的浮点值总是从DLL端读取为零(我也是在debugging模式下检查它的)。 但是,从DLL到Excel的输出工作,即如果它是: Result := 100; 那么A2会读取100.我想我正在做一些非常错误的事情,但我不知道它是什么。 请帮忙吗? 提前致谢。 PS。 64位版本需要声明语句上的完整DLLpath。 […]

Delphi ADO:保存DBEdit的更改

我使用ADO打开Excel表(尽pipe它可能与任何其他数据库相同:adoconnection,adotable,datasource)并将其显示在ReadOnly DBGrid中。 我有DBEdit编辑当前选定的行中的一些值。 但是如何保存呢? 我试图在FormClose adotable.Post,但它会抛出错误,“数据集不在编辑或插入模式”。 我需要在DBEdit OnEnter和Post OnExit中调用adotable.Edit吗?

如何颜色更改为Excel表格中的负值使用delphi编程?

使用条件格式? oXL.FormatConditions.Add(xlCellValue,xlGreater,0); oXL.FormatConditions[1].Font.color = clred;

如何使用OLE将button添加到Excel

我使用这样的OLE方法: var xlApp, xlWorkBook, xlWorkSheet, arr: Variant; begin xlApp := CreateOLEObject('Excel.Application'); xlApp.Visible := True; end; 如何添加button到Excel? 以及如何分配一个存在的马克在这个button? 我在哪里可以findDelphi-OLE-Office文档? 谢谢。