如何通过ado向excel工作表里写数据(50分)

  • 主题发起人 主题发起人 bowa
  • 开始时间 开始时间
B

bowa

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在遇到一个难题,
我打开一个 adoSource: TADODataSet 连接一个excel工作簿,分别建两个dataset
adoSource: TADODataSet
adoTarget: TADODataSet
adoSource 连到其中一个Sheet,adoTarget连到另外一个Sheet,
[说明一下:由于adoSource所在的表格数据太多,而且有很多这样的表,横向有70多列,我需要把他导到adoTarget中,不要说我神经不正常,
我excel自认操作还是蛮好的,但是这个导的工作收工作要累死人的了,所以我想编个程序]
程序大致如下:
procedure TfrmMain.edtFileNameChange(Sender: TObject);
var
s1, s2: String;
begin
if DM.dbExcel.Connected then
DM.dbExcel.Close;
{
Provider=Microsoft.Jet.OLEDB.4.0;
User ID=Admin;Data Source=F:/sxdoc/主要经济效益指标.XLS;
Mode=ReadWrite|Share Deny None;Extended Properties=Excel 8.0;
Persist Security Info=False;
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=35;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
}
s1 := 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Extended Properties=Excel 8.0;'
+ 'Mode=ReadWrite;'
+ 'Persist Security Info=False;';
s2 := 'Data Source=' + edtFileName.Text;
DM.dbExcel.ConnectionString := s1 + s2;
DM.dbExcel.Open;
DM.dbExcel.GetTableNames(cbSheet.Items, False);
DM.dbExcel.GetTableNames(cbTarget.Items, False);
end;
....

procedure TfrmMain.btnOKClick(Sender: TObject);
var
i, j: Integer;
begin
...
...
for i := 0 to clbUnits.Count-1 do
if clbUnits.Checked then
with ds1.DataSet do
begin
First;
while not Eof do
begin
ds2.DataSet.Append;
for j := 0 to clbFields.Count-1 do
ds2.DataSet.FieldByName(clbFields.Items.Names[j]).AsString :=
FieldByName(clbFields.Items.Values[clbFields.Items.Names[j]]).AsString;
ds2.DataSet.FieldByName(cbClass.Text).AsString := clbUnits.Items;
ds2.DataSet.FieldByName(cbData.Text).AsString :=
FieldByName(clbUnits.Items).AsString;
Post;
Next;
end;
end;
end;

问题就是我写不进数据!!!
提示说数据库没有处于编辑或插入状态???

谢谢你
 
真的很急,帮帮忙!
 
用VBA,很简单
 
我自己解决了,不用VBA,我还是喜欢delphi!
 
有些问题向你请教,不知能不能

dhyzf@163.net

excel的导入和导出,用ado
 
能告诉我你的方法吗?
 
后退
顶部