//开始操作数据
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;
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;
除了“填格子”,没有别的简便一点的办法?