导入的实至就是让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;
 
大概是这样写的吧.可能有错,你整理下就是了.