导入的实至就是让CXCRID所关联的DATASET能打得开EXCEL报表,并在CXCRID中显示出来吗?如果是主样的话,可这样试试的 var xlsName : string; begin OpenDialog1.Filter := ‘*.XLS|*.XLS‘; OpenDialog1.DefaultExt := ‘XLS‘; if OpenDialog1.Execute then begin xlsName := OpenDialog1.FileName; ADOConnection1.Connected := false; ADOConnection1.ConnectionString := ‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=‘ + xlsname + ‘;Extended Properties="Excel 8.0;HDR=YES;IMEX=1";Persist Security Info=False‘; ADOQuery1.Connection := ADOConnection1; ADOConnection1.Connected := true; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := ‘select * from [Sheet1$]‘; adoquery1.Parameters.Clear; adoquery1.ParamCheck := false; ADOQuery1.Open; |
您好,你的写法是没有问题的.
可以查下以下几个问题:
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;
大概是这样写的吧.可能有错,你整理下就是了.
哦,那就是没有建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;
大概是这样写的吧.可能有错,你整理下就是了.