这是数据库的基本操作: 1、通过XLSReadWriteII4控件打开读取EXCEL表,并数据读取数据。读取时指定行、列的Cell。 2、将读入数组。 2、将数组通过SQL语句写入(插入DBGrid)指定表中。代码大约如此,提示: for Row := 6 to XLS.Sheets[0].LastRow-1 do begin First:=Row; if (XLS.Sheets[0].AsString[0,First]<>'') and (XLS.Sheets[0].AsString[1,First]<>'') and (XLS.Sheets[0].AsString[1,First]<>'') and (XLS.Sheets[0].AsString[17,First]='0') then // 正票 begin if First=(XLS.Sheets[0].LastRow-1) then begin Last:=First; end else begin if (XLS.Sheets[0].AsString[0,First+1]<>'') and (XLS.Sheets[0].AsString[1,First+1]<>'') and (XLS.Sheets[0].AsString[1,First+1]<>'') and (XLS.Sheets[0].AsString[17,First+1]='0') then begin Last:=First; end else begin Last:=First; repeat Last:=Last+1; until (XLS.Sheets[0].AsString[9,Last]='小计') or (Last>=XLS.Sheets[0].LastRow-1); end; end; A[Top,0]:=XLS.Sheets[0].AsString[6,First]; A[Top,1]:=XLS.Sheets[0].AsString[0,First]; A[Top,2]:=XLS.Sheets[0].AsString[1,First]; A[Top,3]:=XLS.Sheets[0].AsString[2,First]; A[Top,4]:=XLS.Sheets[0].AsString[9,Last]; // 小计 ..... Top:=Top+1; end; end; XLS.Free; DateTimetoString(ID1,'yyyyMMddnnss',Now); for i:=0 to Top-1 do begin ID:=ID1+IntToStr(100+i); with DBGridEh1.DataSource.DataSet do begin Append; j:=Pos(' ',A[i,0]); S:=Copy(A[i,0],1,J-1); dDate:=StrToDate(S); FieldByName('日期').asString:=FormatdateTime('yyyy-MM-dd',dDate); FieldByName('发票代码').asString:=A[i,1]; FieldByName('发票号码').asString:=A[i,2]; FieldByName('受票人名称').asString:=A[i,3]; else FieldByName('收入方式').asString:='现金'; FieldByName('开票人').asString:=A[i,30]; FieldByName('项目1').asString:=A[i,6]; FieldByName('金额1').asString:=A[i,7]; FieldByName('项目2').asString:=A[i,8]; FieldByName('金额2').asString:=A[i,9]; FieldByName('ID').asString:=ID; Post; end; end;
1、通过XLSReadWriteII4控件打开读取EXCEL表,并数据读取数据。读取时指定行、列的Cell。
2、将读入数组。
2、将数组通过SQL语句写入(插入DBGrid)指定表中。代码大约如此,提示:
for Row := 6 to XLS.Sheets[0].LastRow-1 do
begin
First:=Row;
if (XLS.Sheets[0].AsString[0,First]<>'') and (XLS.Sheets[0].AsString[1,First]<>'') and
(XLS.Sheets[0].AsString[1,First]<>'') and (XLS.Sheets[0].AsString[17,First]='0') then // 正票
begin
if First=(XLS.Sheets[0].LastRow-1)
then begin
Last:=First;
end
else begin
if (XLS.Sheets[0].AsString[0,First+1]<>'') and (XLS.Sheets[0].AsString[1,First+1]<>'') and
(XLS.Sheets[0].AsString[1,First+1]<>'') and (XLS.Sheets[0].AsString[17,First+1]='0')
then begin
Last:=First;
end
else begin
Last:=First;
repeat
Last:=Last+1;
until (XLS.Sheets[0].AsString[9,Last]='小计') or (Last>=XLS.Sheets[0].LastRow-1);
end;
end;
A[Top,0]:=XLS.Sheets[0].AsString[6,First];
A[Top,1]:=XLS.Sheets[0].AsString[0,First];
A[Top,2]:=XLS.Sheets[0].AsString[1,First];
A[Top,3]:=XLS.Sheets[0].AsString[2,First];
A[Top,4]:=XLS.Sheets[0].AsString[9,Last]; // 小计
.....
Top:=Top+1;
end;
end;
XLS.Free;
DateTimetoString(ID1,'yyyyMMddnnss',Now);
for i:=0 to Top-1 do
begin
ID:=ID1+IntToStr(100+i);
with DBGridEh1.DataSource.DataSet do
begin
Append;
j:=Pos(' ',A[i,0]);
S:=Copy(A[i,0],1,J-1);
dDate:=StrToDate(S);
FieldByName('日期').asString:=FormatdateTime('yyyy-MM-dd',dDate);
FieldByName('发票代码').asString:=A[i,1];
FieldByName('发票号码').asString:=A[i,2];
FieldByName('受票人名称').asString:=A[i,3];
else FieldByName('收入方式').asString:='现金';
FieldByName('开票人').asString:=A[i,30];
FieldByName('项目1').asString:=A[i,6];
FieldByName('金额1').asString:=A[i,7];
FieldByName('项目2').asString:=A[i,8];
FieldByName('金额2').asString:=A[i,9];
FieldByName('ID').asString:=ID;
Post;
end;
end;
连接串是:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1";Persist Security Info=False