procedure TForm1.Button1Click(Sender: TObject);
var
I, J: Integer;
K: Integer;
S: string;
begin
if not Assigned(DBGrid1.DataSource) then Exit;
if not Assigned(DBGrid1.DataSource.DataSet) then Exit;
if not DBGrid1.DataSource.DataSet.Active then Exit;
if not DBGrid1.DataSource.DataSet.CanModify then Exit;
with TStringList.Create do try
Text := Clipboard.AsText;
if Text = '' then Exit;
for I := 0 to Count - 1 do
begin
S := Strings[I] + #9;
DBGrid1.DataSource.DataSet.Append;
K := Pos(#9, S);
for J := 0 to DBGrid1.Columns.Count - 1 do
begin
if not Assigned(DBGrid1.Columns[J].Field) then Continue;
if S = '' then Break;
DBGrid1.Columns[J].Field.Value := Copy(S, 1, K - 1);
System.Delete(S, 1, K);
end;
DBGrid1.DataSource.DataSet.Post;
end;
finally
Free;
end;
end;
tO :sdzeng(大头鸟)和zaza_bbface(我试着成熟一点)
复制到剪贴板的方法,我们可以直接打开数据所在的excel文件,直接对其操作,复制数据到剪贴板上,而不用写程序的,这样好方便。
余下的问题是:怎么把刚刚复制到剪贴板的数据写入到adodataset1或者dbgrid1中,这是问题的关键!请高手赐教!一定散分!
procedure TForm1.Button1Click(Sender: TObject);
var
i,j : Integer;
slst : TStringList;
s : string;
begin
//---------------------------------------------
//打开Excel,读取指定单元格内容,并复制到剪切版
//---------------------------------------------
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Open('E:\aaa.xls',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
slst := TStringList.Create;
try
for i:=1 to 3 do
begin
s := '';
for j:=1 to 3 do
begin
s := s+VarToStr(ExcelWorksheet1.Cells.Item[i,j]) +#9;
end;
slst.Add(s);
end;