//开始操作数据
ir := dataset.RecordCount;
    inteval := 70 mod ir;
    ic := 0;
    //屏蔽一些不想显示的列名
    for i := 0 to dataset.FieldCount - 1 do
    begin
        if dataset.Fields[i].Tag = 0 then
        begin
            Inc(ic);
            wkSheet.Cells.Item[2, ic].value := dataset.Fields[i].DisplayName;
        end;
    end;
Datas := varArrayCreate([1, ir, 1, ic], varVariant);
    dataset.First;
for i := 1 to ir do
    begin
        l := 0;
for j := 1 to ic do
        begin
            while (dataset.Fields[l].Tag = 1)
              and (l < dataset.FieldCount) do
                Inc(l);
            if l < dataset.FieldCount then
            begin
                if DBGridEh.Columns[l].KeyList.Count > 0 then
                begin
                    iIndex := DBGridEh.Columns[l].KeyList.IndexOf(
                        dataset.Fields[l].AsString);
                    if iIndex >= 0 then
                        Datas[i, j] := DBGridEh.Columns[l].PickList[iIndex];
                end
                else
                    Datas[i, j] :=  dataset.Fields[l].AsString;
            end;
            Inc(l);
        end;
        frmMain.ProgressBar1.Position := frmMain.ProgressBar1.Position + inteval;
        dataset.Next;
    end; with wkSheet do
begin
Activate(LCID);
Cells.Item[1,1].Value:= sTitle;
Range[cells.Item[3, 1],cells.Item[ir + 2, ic]].Value := Datas;
end;
Datas := Unassigned;