delphi7中让excel中的数据导入到cxgrid控件中并显示

varxlsName:string;procedureTForm1.Button1Click(Sender:TObject);beginOpenDialog1.Filte... var
xlsName : string;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter := '*.XLS|*.XLS';
OpenDialog1.DefaultExt := 'XLS';
if OpenDialog1.Execute then
begin
xlsName := OpenDialog1.FileName;
ADOQuery1.Close;

ADOQuery1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;'
+ 'Persist Security Info=false;Data Source= ' + xlsname;
ADOQuery1.SQL.Text := 'select * from [Sheet1$]';
ADOQuery1.Open;
end;

end;
end.
我用了这段代码,但是cxgrid中没有任何数据显示。
展开
 我来答
pthaihong2013
2014-01-24 · TA获得超过163个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:137万
展开全部
您好,你的写法是没有问题的.
可以查下以下几个问题:
1:cxgridDBTableView的Datacontroller.datasource有没有指到datasource,datasource有没有连到ADOQuery1
2:cxgridDBTableView的columns有没有加对,每个columns对应的列名有没有指正确.
希望能解决您的问题.
更多追问追答
追问
我这个是动态加载的,columns在运行前没有一一对应,是不是columns要在运行时指定,代码如何实现,恳请指教,不胜感激!
追答
哦,那就是没有建columns了.
那你得写生成columns的代码了哦.
ADOQuery.open后.
var
AItem: TCxGridDBBandedColumn;
.....
CxgridDBTableView.BeginUpdate;
for i := 0 to ADOQuery.Fields.count -1 do
begin
AItem := CxgridDBTableView.CreateColumn;
AItem.Caption := ADOQuery.Fields[i].FieldName;
AItem.DataBinding.FieldName := ADOQuery.Fields[i].FieldName;
AItem.Width := 80;
end;
CxgridDBTableView.EndUpdate;

大概是这样写的吧.可能有错,你整理下就是了.
抹布工程
2014-01-25 · TA获得超过163个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:136万
展开全部
之前我们是按照规定的格式导入,如果excel 格式改变的话就会出现错误,一般不建议,其实delphi有自带导入excel资料的控件,可以试试看!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
memkey
2014-01-25
知道答主
回答量:13
采纳率:0%
帮助的人:11.2万
展开全部
ADOQuery1 你没有绑定到cxgrid控件上吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式