对于第一种方法,你可以先把excel中的数据读到一个stringgrid中,在stringgrid中编辑,然后写入excel中.
第二种方法:我给你贴段程序创建accesss数据库和数据表的代码,你自己看看。
Procedure TSubmitDataForm.CreateAdoDatabase(databasename:String;DataPath:String);
Var
myCreateADo:TAdoquery;
cat:OleVariant;
myPath:String;
I:Integer;
myStr,myStr1,myStr2,myStr3,myStr4,myStr5,myStr6,myStr7,myStr8,myStr9,myStr10:String;
myList1,myList2,myList3,myList4,myList5,myList6,myList7,myList8,myList9:TStringList;
myList10,myList11:TStringList;
begin
try
If Copy(DataPath,length(DataPath)-1,1)<>'/' then
DataPath:=DataPath+'/';
DataPath:=DataPath+DataBaseName+Trim(G_Nd)+'.mdb';
If Fileexists(DataPath) then
//如果存在,则删除
deletefile(DataPath);
cat:=CreateOleObject('ADOX.Catalog');
cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataPath);
//Cat.Free;
myList1:=TStringList.Create;
myList2:=TStringList.Create;
myList3:=TStringList.Create;
myList4:=TStringList.Create;
myList5:=TStringList.Create;
myList6:=TStringList.Create;
myList7:=TStringList.Create;
myList8:=TStringList.Create;
myList9:=TStringList.Create;
myList10:=TStringList.Create;
myList11:=TStringList.Create;
myList1.clear;
mylist2.Clear;
myList3.clear;
mylist4.Clear;
myList5.Clear;
myList6.Clear;
myList7.clear;
myList8.clear;
myList9.Clear;
myList10.Clear;
myList11.Clear;
myStr:='';
myStr1:='';
myStr2:='';
myStr3:='';
myStr4:='';
myStr5:='';
myStr6:='';
myStr7:='';
myStr8:='';
myStr9:='';
myStr10:='';
//==================区块数据表
myList1.add('Create Table qkTable ');
//创建表
myList1.Add('(lb Int Not Null default 0,');
//类别
myList1.add('Qk Char(40) Not Null,');
//类别名称
myList1.add('Xylb Char(50),');
//效益类别
myList1.add('qsny char(10) Not Null,');
//起始年月
myList1.add('Zzny Char(10) Not Null,');
//中止年月
myList1.add('yclx Char(40) Not Null,');
//油藏类型
myList1.add('xsyp Char(40) Not Null,');
//销售油品
myList1.Add('ssyt char(40),');
//所属油田
myList1.add('Dyhymj Decimal(20,4) not null default 0,');
//动用含油面积
myList1.add('DyDzcl Decimal(20,4) not Null default 0,');
//动用地质储量
myList1.Add('DyKccl Decimal(20,4) Not Null default 0,');
//动用可采储量
myList1.add('ycZs Decimal(20,4) Not Null Default 0,');
// 油藏中深
myList1.add('Pjstl Decimal(20,4) Not Null Default 0,');
//平均渗透率
myList1.add('dxyynd Decimal(20,4) Not Null Default 0,');
//地下原油年度
myList1.add('yjzs Decimal(20,4) Not Null Default 0,');
//油井总数
myList1.add('yjkjs Decimal(20,4) Not Null Default 0,');
//油井开井数
myList1.add('sjzs Decimal(20,4) Not Null Default 0,');
//水井总数
myList1.add('sjkjs Decimal(20,4) Not Null Default 0,');
//水井开井数
myList1.add('zqjzs Decimal(20,4) Not Null Default 0,');
//注汽井总数
myList1.add('zqjkjs Decimal(20,4) Not Null Default 0,');
//注汽井开井数
myList1.add('ljcyl Decimal(20,4) Not Null Default 0,');
//累计产油量
myList1.add('zql Decimal(20,4) Not Null Default 0,');
//注汽量
myList1.add('ljzql Decimal(20,4) Not Null Default 0,');
//累计注汽量
myList1.add('zsl Decimal(20,4) Not Null Default 0,');
//注水量
myList1.add('ljzsl Decimal(20,4) Not Null Default 0,');
//累计注水量
myList1.Add('dwmc Char(60) Not Null default '+DatabaseName);
//单位名称
myList1.Add(')');
For I:=0 to myList1.Count-1do
myStr:=myStr+myList1.Strings;
//下面是创建数据库的程序
//创建区块表
myCreateAdo:=TAdoquery.Create(self);
GAdoLink:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataPath;
myCreateAdo.ConnectionString:=GAdoLink;
//创建QkTable
myCreateAdo.SQL.clear;
myCreateAdo.SQL.append(myStr);
myCreateAdo.ExecSQL;
myCreateAdo.Close;
myCreateAdo.SQL.Text:='ALTER TABLE [QkTable] ADD CONSTRAINT [Qktable] PRIMARY KEY (lb,qk,qsny,zzny)';
myCreateAdo.ExecSQL;
myCreateAdo.Close;