excel报表问题

bbsfly1239 2011-04-22 03:20:01

var ExcelApp,ExcelBook:Variant;
col,row:integer;
fLevelNode,sLevelNode,tLevelNode:TcxTreeListNode;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
except
showmessage('系统没有安装Microsoft Excel');
exit;
end;
ExcelBook:=ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
if cxTreeList.Count>0 then
begin
row:=0;
fLevelNode:=cxTreeList.TopNode;
while fLevelNode<>nil do
begin
sLevelNode:=fLevelNode.getFirstChild;
while sLevelNode<>nil do
begin
tLevelNode:=sLevelNode.getFirstChild;
while tLevelNode<>nil do
begin
for col:=0 to cxTreeList.ColumnCount-1 do
begin
ExcelApp.Cells[row,col].Value:=cxTreeList.Columns[col].DisplayTexts[tLevelNode];//这句报错
end;
tLevelNode:=tLevelNode.getNextSibling;
inc(row);
end;
sLevelNode:=sLevelNode.getNextSibling;
end;
fLevelNode:=fLevelNode.getNextSibling;
end;
end;
ExcelBook.SaveAS(ExtractFilePath(application.ExeName)+'数据展示.xls');
end;


我现在是要遍历3级节点的数据,然后输出到EXCEL中,但是加注释的那句老报错,哪位大虾给点指点。
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之谷 2011-04-22
  • 打赏
  • 举报
回复
ExcelApp.Cells[row,col].Value 错误肯定是这里的

看一下 ROW COL的值是多少,再看下 EXCEL 的行,列 起始是0还是1

有可能是你定义到无效的行,列了
bbsfly1239 2011-04-22
  • 打赏
  • 举报
回复
晕,搞定了,原来excel不能从cells[0,0]开始添加数据。好了,结贴了
浩南_哥 2011-04-22
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110328/09/c9745779-f4ad-475a-a5c1-8d6c01eb8839.html
可以看先这个帖子#13的回复

var
AValue, APath: String;
begin
For I := 0 To cxGridDBTableView2.ViewData.RowCount - 1 Do
Begin
If Not cxGridDBTableView2.ViewData.Rows[i].ExpandOnDblClick Then
Begin
For n := 1 To cxGridDBTableView2.VisibleColumnCount Do
Begin
AValue := String(cxGridDBTableView2.ViewData.Rows[i].Values[n]);
Try
ExcelApp.Cells[ALines, n].Value := AValue;
Except

End;
End;
End;
ALines := ALines + 1;
End;
end;
bbsfly1239 2011-04-22
  • 打赏
  • 举报
回复
OLE error 800A03EC
风之谷 2011-04-22
  • 打赏
  • 举报
回复
错误信息是什么?
浩南_哥 2011-04-22
  • 打赏
  • 举报
回复
。。。。。。String变量赋值给Excel这样也出错??那还是坐等牛人吧。
PS:是不是Excel的单元格设置了特殊的格式
bbsfly1239 2011-04-22
  • 打赏
  • 举报
回复
我就是这么测试的。。
浩南_哥 2011-04-22
  • 打赏
  • 举报
回复
要不你可以试试
先将cxTreeList.Columns[col].DisplayTexts[tLevelNode]赋值给一个String变量
然后再将String变量赋值给ExcelApp.Cells[row,col].Value。
bbsfly1239 2011-04-22
  • 打赏
  • 举报
回复
值能取到,之前测试过了
浩南_哥 2011-04-22
  • 打赏
  • 举报
回复
ExcelApp.Cells[row,col].Value:=cxTreeList.Columns[col].DisplayTexts[tLevelNode];//这句报错
是赋值出错?还是cxTreeList.Columns[col].DisplayTexts[tLevelNode]取值出错??
Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧