把数据库的内容转换到EXCEL或WORD中去:(.dbf 不行)procedure TForm3.BitBtn2Click(Sender: TObject); var f:textfile; fs,str:string; i,j,k:integer; begin if not query1.IsEmpty then begin if savedialog1.execute then begin fs:=savedialog1.filename; assignfile(f,fs); rewrite(f); for i:=0 to query1.FieldCount-1 do begin begin str:=query1.Fields[i].Displaylabel; for j:=query1.Fields[i].datasize to 35 do begin str:=str+' '; end; write(f,str); end; end; writeln(f,''); query1.first; for i:=0 to query1.RecordCount-1 do begin for j:=0 to query1.FieldCount-1 do begin str:=query1.Fields[j].Displaytext; for k:=query1.Fields[j].datasize to 35 do begin str:=str+' '; end; write(f,str); end; writeln(f,''); query1.next; end; filestr1:=fs; closefile(f); end; end else begin showmessage('empty table'); end; query1.first; end;
var
e:variant;
i,j:integer;
x1,x2,y1,y2:integer;
rowcount,colcount:integer;
columnwidth:array of integer;
first,second,last:string;
begin
try
e:=CreateOleObject('Excel.Application');
e.workbooks.add();
e.visible:=true;
except
showmessage('ÄúµÄ¼ÆËã»úÖÐδ°²×°MicroSoft Excel');
exit;
end;
e.ActiveWindow.DisplayGridlines:=false;
//µÃµ½ÁÐÊý
colcount:=DBGrid.Columns.Count ;
setlength(columnwidth,colcount);
for i:=low(columnwidth) to high(columnwidth) do
columnwidth[i]:=0;//Ìîд±êÌâ
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].HorizontalAlignment := xlGeneral;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].VerticalAlignment := xlBottom;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].WrapText := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Orientation := 0;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].AddIndent := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].ShrinkToFit := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].MergeCells := True;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].HorizontalAlignment := xlCenter;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].VerticalAlignment := xlBottom;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Name := 'ºÚÌå';
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Size := 16;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Strikethrough := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Superscript := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Subscript := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.OutlineFont := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Shadow := False;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.Underline := xlUnderlineStyleNone;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[2,1],e.Workbooks[1].Sheets[1].Cells[2,ColCount]].Font.ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Cells[2,1] := Title;
//Ìîд±¨±íµ¥Î»,ʱ¼ä
e.Workbooks[1].Sheets[1].Cells[4,1]:='±¨±íµ¥Î»:';
e.Workbooks[1].Sheets[1].Cells[4,4] :='±¨±íʱ¼ä:'+ DateTime;
//Ìîд±íÍ·
e.Workbooks[1].Sheets[1].Cells[5,1] :=DBGrid.Fields[0].DisplayName;
columnwidth[0]:=length(DBGrid.Fields[0].DisplayName);
for i:=2 to ColCount do
begin
e.Workbooks[1].Sheets[1].Cells[5,i] :=DBGrid.Fields[i-1].DisplayName;
columnwidth[i-1]:=length(DBGrid.Fields[i-1].DisplayName);
end;
//ÌîдÊý¾Ý
i:=1;
DBGrid.DataSource.DataSet.First ;
while not DBGrid.DataSource.DataSet.Eof do
begin
for j:=1 to ColCount do
begin
e.Workbooks[1].Sheets[1].Cells[5+i,j] := DBGrid.Fields[j-1].AsString;
if columnwidth[j-1]<length(DBGrid.Fields[j-1].AsString) then
columnwidth[j-1]:=length(DBGrid.Fields[j-1].AsString);
end;
DBGrid.DataSource.DataSet.Next;
i:=i+1;
end;
//µ÷ÕûexcelÁпí¶È
for i:=1 to colcount do
e.Workbooks[1].Sheets[1].Columns[i].ColumnWidth:=columnwidth[i-1]; y1:=5;
x1:=1;
y2:=8+DBGrid.DataSource.DataSet.RecordCount-1;
x2:=ColCount;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeTop].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeTop].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeTop].ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeBottom].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeBottom].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeRight].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeRight].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeRight].ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeLeft].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeLeft].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlEdgeLeft].ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideVertical].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideVertical].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideVertical].ColorIndex := xlAutomatic;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideHorizontal].LineStyle := xlContinuous;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideHorizontal].Weight := xlThin;
e.Workbooks[1].Sheets[1].Range[e.Workbooks[1].Sheets[1].Cells[y1,x1],e.Workbooks[1].Sheets[1].Cells[y2,x2]].Borders[xlInsideHorizontal].ColorIndex := xlAutomatic;// e.visible:=true;// excel.DisplayAlerts:=true;//Í˳öʱ²»Ìáʾ// e.quit;
end;
1、添加ADOTable1控件,设置下列属性:
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Persist Security Info=false;Data Source=c:\abc.xls";
TableDirect=true;
TableName="sheet1$";
Active=true;
2、添加DataSource1控件,设置下列属性:
DataSet=ADOTable1
3、添加DBGrid1控件,设置下列属性:
DataSource=DataSource1
var f:textfile;
fs,str:string;
i,j,k:integer;
begin
if not query1.IsEmpty then
begin
if savedialog1.execute then
begin
fs:=savedialog1.filename;
assignfile(f,fs);
rewrite(f);
for i:=0 to query1.FieldCount-1 do
begin
begin
str:=query1.Fields[i].Displaylabel;
for j:=query1.Fields[i].datasize to 35 do
begin
str:=str+' ';
end;
write(f,str);
end;
end;
writeln(f,'');
query1.first;
for i:=0 to query1.RecordCount-1 do
begin
for j:=0 to query1.FieldCount-1 do
begin
str:=query1.Fields[j].Displaytext;
for k:=query1.Fields[j].datasize to 35 do
begin
str:=str+' ';
end;
write(f,str);
end;
writeln(f,'');
query1.next;
end;
filestr1:=fs;
closefile(f);
end;
end
else
begin
showmessage('empty table');
end;
query1.first;
end;