有那位高手用过,复制、粘贴的方法从Excel中复制记录到adodataset1,或者到dbgrid1中,它是一样录入数据记录的方法!或者另外提供一种从Excel快速录入记录数据的方法!验证后,可用!定当以全额分值相赠!决不食言!
解决方案 »
- cxdbtextedit怎样像dbedit1.Field.AsString这样获取值
- Delphi提取SQL数据库Image类型字段问题
- 在线等!!!急,大虾帮忙啊
- 急急1!!!!!(关于数据库的问题)
- Label问题
- QuickRep中,QRDBRichText怎么会没有输出呢??
- 用KeyDown事件怎样检测到在键盘上按方向键(左)、方向键(右)、方向键(上)、方向键(下)?
- 怎样才能在全部的dbedit的控件里都添完数据并签测完后,手工控制录如数据库呢(有内容)
- 存储过程是否支持数组参数传递?如能请给例子
- 关于动态生成组件
- 请问如何得到treeview某个节点下的节点数
- 谁能帮我解决一下delphi对sql2000数据库数据备份和数据还原的问题。
这样写连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'
或者
创建ole对象来操作excel至于你说的Grid问题,
模拟输入即可手动触发所有的事件,导入简单校验难!
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; Clipboard.AsText := Copy(slst.Text,1,Length(slst.Text)-3);//去掉多余的3个字符
finally
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
slst.Free;
end;
end;
复制到剪贴板的方法,我们可以直接打开数据所在的excel文件,直接对其操作,复制数据到剪贴板上,而不用写程序的,这样好方便。
余下的问题是:怎么把刚刚复制到剪贴板的数据写入到adodataset1或者dbgrid1中,这是问题的关键!请高手赐教!一定散分!
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;
上面的方法我都测试了一下,很好!先谢谢各位高手了!请问还有其他的方法吗?
于星期六结帖!请高手再乘机说两句!可以吗?谢谢