procedure TForm1.Button1Click(Sender: TObject);
var
excel_sheet:variant;
e_s:variant;
i,j:integer;
save_ok:boolean;
begin
Table1.TableName:=ComboBox1.Text;
Table1.Open;
try //啟動Excel
excel_sheet:=CreateOleObject('excel.sheet');
except
showmessage('無法啟動 MS Excel');
exit;
end;
excel_sheet.application.visible:=true; //啟示 MS Excel 執行情況
for i:=0 to table1.FieldCount-1 do
excel_sheet.cells(1,i+1):=Table1.Fields[i].FullName;
j:=1;
while not Table1.Eof do
begin
j:=j+1;
for i:=0 to Table1.FieldCount-1 do
excel_sheet.cells(j,i+1):=Table1.Fields[i].AsString;
Table1.Next;
end;
Table1.Close;
if messagedlg('轉換成攻! 要存檔嗎',mtinformation,[mbyes,mbno],0)=mryes then
begin
save_ok:=SaveDialog1.Execute;
if save_ok then
excel_sheet.saveas(SaveDialog1.FileName);
end;
excel_sheet.application.quit; //關閉 MS Excel
end;
var
excel_sheet:variant;
e_s:variant;
i,j:integer;
save_ok:boolean;
begin
Table1.TableName:=ComboBox1.Text;
Table1.Open;
try //啟動Excel
excel_sheet:=CreateOleObject('excel.sheet');
except
showmessage('無法啟動 MS Excel');
exit;
end;
excel_sheet.application.visible:=true; //啟示 MS Excel 執行情況
for i:=0 to table1.FieldCount-1 do
excel_sheet.cells(1,i+1):=Table1.Fields[i].FullName;
j:=1;
while not Table1.Eof do
begin
j:=j+1;
for i:=0 to Table1.FieldCount-1 do
excel_sheet.cells(j,i+1):=Table1.Fields[i].AsString;
Table1.Next;
end;
Table1.Close;
if messagedlg('轉換成攻! 要存檔嗎',mtinformation,[mbyes,mbno],0)=mryes then
begin
save_ok:=SaveDialog1.Execute;
if save_ok then
excel_sheet.saveas(SaveDialog1.FileName);
end;
excel_sheet.application.quit; //關閉 MS Excel
end;
解决方案 »
- 如何用delphi开启和关闭tomcat
- 如何根据一个变量值来生成一组数字??
- DBGRID检索问题!请大家帮忙!急!!!!
- 我想问一下IntraWeb的页面刷新事件是哪个?
- 请教高手,我做了一个导出到Excel的存储过程但有些问题希望能得到答案
- 关于LOOKUP字段的简单问题,散分
- 我有一些关于Delphi8 for .net的问题,请各位指教
- 有没有人会?
- 用delphi实现从com1口读数,请给出例子,有分加!
- 本人有delphi优秀控件近千个,且有相关说明资料,可惜是书,不知道大家对此有没有兴趣
- 高分求教:关于DELPHI中Activexform的一个问题?(急,急)
- 想问一个原生ADO的问题,请高手进来看一下,谢谢!!
var
WordApp,WordDoc,WordParagraph,WordRange,WordTable:variant;
SltRec,SltCol,VisCol :integer;
ColIndex,RowIndex : Integer;
selr,selc,j,hh,lh:integer;
allself:boolean;
MergeCell : Variant;
begin
if VarIsEmpty(WordApp) then
WordApp := CreateOleObject('word.Application'); WordDoc := WordApp.documents.add;
WordParagraph := WordApp.activedocument.paragraphs.add;
WordRange := WordParagraph.range; WordRange.text:= Table1.TableName +#13+' ';
WordRange.Font.Size := 18;
WordRange.Font.Name := '宋体'; WordApp.Visible := true;
//统计打印行数
SltRec:=5;
SltCol := 5;
SltRec:=DBGrid1.SelectedRows.Count;
if SltRec = 0 then
SltRec := Table1.RecordCount; //统计打印列数
allself:=True;
SltCol := 0;
VisCol := 0;
for j:= 0 to DBGrid1.Columns.Count-1 do
begin
if DBGrid1.Columns[J].Visible then
begin
VisCol := VisCol + 1; if DBGrid1.Columns[j].Title.Color=clAqua then
begin
SltCol := SltCol + 1;
end;
end;
end;
if SltCol = 0 then
SltCol := VisCol; WordRange := WordApp.ActiveDocument.Content;
WordRange.Collapse(wdCollapseEnd);
WordTable:= WordApp.activedocument.tables.add(WordRange,SltRec + 2,SltCol); {打印表头}
ColIndex := 1;
for j := 0 to dbgrid1.Columns.Count-1 do
begin
if SltCol <> VisCol then
begin
if (dbgrid1.Columns[j].Visible = false) or (dbgrid1.Columns[j].Title.color <> clAqua) then
Continue;
end; WordTable.Cell(1,ColIndex).Range.InsertAfter(dbgrid1.Columns[j].Title.Caption);
DBGrid1.Columns[J].Title.Color := clAqua;
ColIndex := ColIndex + 1;
end; //打印数据
Table1.First;
RowIndex := 2;
ColIndex := 1;
while not Table1.Eof do
begin
if SltRec <> Table1.RecordCount then
begin
if dbgrid1.SelectedRows.CurrentRowSelected = false then
begin
Table1.Next;
Continue;
end;
end; for j := 0 to dbgrid1.Columns.Count-1 do begin
if (dbgrid1.Columns[j].Visible<>false) and (dbgrid1.Columns[j].Title.color=clAqua) then
begin
WordTable.Cell(RowIndex,ColIndex).Range.InsertAfter
(Table1.Fieldbyname(dbgrid1.Columns[j].FieldName).asstring);
ColIndex := ColIndex + 1;
end;
end;
RowIndex := RowIndex + 1;
ColIndex := 1;
Table1.Next;
end;{End of While...not...}
end;