QuantumGrid有另存为xls的功能,其他的功能也很强大,可以考虑采用呀
解决方案 »
- 判断加班问题?请兄台帮帮小妹……
- exe如何转换dll的问题 和 如何执行sql命令文件问题
- Delphi7中的QReport控件从哪里找来?
- 新手的qreport问题,如何在报表中显示总的页码数,望各位大虾帮助解决。
- .dcu是什么文件,什么用的?
- MIDAS中为什么ClientDataSet不能删除数据到服务器?
- 我枚举一个游戏窗体的类,只得到了TDXDraw,我怎样才能得到TDXDraw中更多的信息呢,比如得到其中的文字?
- delphi中可不可以像vc那样在onpaint函数中通过内存图像显示图像?
- 请教skin技术和plugin技术的基本原理
- delphi开发web
- 哪里有DELPHI的函数大全?
- 一个在vb中很容易解决的问题,在Delphi中却找不到答案,各位帮帮忙,up有分
procedure SaveToExcelFile(DbgridName: TDbGrid);
var
XLApp: Variant;
Sheet: Variant;
WordApp,WordDoc,WordParagraph,WordRange,WordTable:variant;
I, J: Integer;
SaveDialog:TSaveDialog;
pBookMark: TBookMark;
StrSaveFile:string;
IntFileType:integer;
SltRec,SltCol :integer;
ColIndex,RowIndex : Integer;
begin
if dbgridname.DataSource.DataSet.IsEmpty then begin
messagebox(application.Handle,'没有任何数据,不能进行保存',
'警告',mb_ok);
abort;
end;
SaveDialog:=TSaveDialog.Create(Nil);
SaveDialog.Filter := 'Microsoft Excel 文件|*.xls|Microsoft Word 文件|*.doc';
SaveDialog.Execute;
IntFileType:=SaveDialog.FilterIndex;
StrSaveFile:=SaveDialog.FileName;
if length(StrSaveFile)=0 then exit;
try
screen.Cursor:=crHourGlass;
case IntFileType of
1: begin
try
XLApp := CreateOleObject('Excel.Application');
XLApp.WorkBooks.Add(-4167);
XLApp.WorkBooks[1].WorkSheets[1].Name := '导出数据';
Sheet := XLApp.WorkBooks[1].WorkSheets['导出数据'];
J := 1;
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
with Dbgridname.DataSource.DataSet do
begin
pBookMark := GetBook;
DisableControls;
for I:=0 to dbgridname.Columns.Count-1 do
begin
if dbgridname.Columns[I].Visible=False then
Continue;
Sheet.Cells[J,I+1] := dbgridname.Columns[I].Title.Caption;
end;
Inc(J);
First;
while not Eof do begin
for I:=0 to dbgridname.Columns.Count-1 do begin
if dbgridname.Columns[I].Visible=False then
Continue;
Sheet.Cells[J,I+1] := trim(dbgridname.DataSource.DataSet.Fieldbyname(dbgridname.Columns[i].FieldName).asstring);
end;
Inc(J);
Next;
end;
GotoBook(pBookMark);
FreeBook(pBookMark);
EnableControls;
end;
XLApp.activeworkbook.saveas(StrSaveFile);
Application.ProcessMessages;
XLApp.Application.Quit;
end;
2: begin
try
if VarIsEmpty(WordApp) then
WordApp := CreateOleObject('word.Application');
WordDoc := WordApp.documents.add;
WordParagraph := WordApp.activedocument.paragraphs.add;
WordRange := WordParagraph.range;
WordRange.Font.Size := 15;
WordRange.Font.Name := '宋体';
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Word! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Word。','提示',MB_OK+MB_ICONINFORMATION);
Abort;
end;
SltRec:=dbgridname.SelectedRows.Count;
SltCol := 0;
for j := 0 to dbgridname.Columns.Count-1 do begin
if dbgridname.Columns[J].Visible then
SltCol := SltCol +1;
end; WordRange := WordApp.ActiveDocument.Content;
WordTable:= WordApp.activedocument.tables.add(WordRange,SltRec + 1,SltCol);
ColIndex := 1; for j := 0 to dbgridname.Columns.Count-1 do begin
if (dbgridname.Columns[j].Visible = false) then
Continue;
WordTable.Cell(1,ColIndex).Range.InsertAfter(dbgridname.Columns[j].Title.Caption);
ColIndex := ColIndex + 1;
end; RowIndex := 2;
ColIndex := 1;
with dbgridname.DataSource.DataSet do begin
First;
pBookMark := GetBook;
DisableControls;
while not Eof do begin
for j := 0 to dbgridname.Columns.Count-1 do begin
if (dbgridname.Columns[j].Visible<>false) then
begin
WordTable.Cell(RowIndex,ColIndex).Range.InsertAfter
(dbgridname.DataSource.DataSet.Fieldbyname(dbgridname.Columns[j].FieldName).asstring);
ColIndex := ColIndex + 1;
end;
end;
RowIndex := RowIndex + 1;
ColIndex := 1;
Next;
end;
GotoBook(pBookMark);
FreeBook(pBookMark);
EnableControls;
end;
WordApp.activedocument.saveas(StrSaveFile);
Application.ProcessMessages;
WordApp.Application.Quit;
end;
end;
Finally
SaveDialog.Free;
screen.Cursor:=crDefault;
end;
end;
var
aSheet:Variant;
i:integer;begin
//显示Ms-excel的执行过程
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.WorkBooks.Add(xlWBATWorksheet,1);
aSheet:=ExcelApplication1.Worksheets.Item[1];
aSheet.cells[1,1].Value:='会员卡号';
aSheet.cells[1,2].Value:='会员姓名';
aSheet.cells[1,3].Value:='累计消费金额';
aSheet.cells[1,4].Value:='职业';
aSheet.cells[1,5].Value:='会员级别';
aSheet.cells[1,6].Value:='专卖店名称';
//asheet.cells[20,1].Value:='总计';
i:=2;
with adoquerytotal do
begin first; while not eof do begin
aSheet.cells[i,1].Value:=FieldbyName('hykh').Asstring;
aSheet.cells[i,2].Value:=FieldbyName('name').Asstring;
aSheet.cells[i,3].Value:=FieldbyName('column1').Asstring;
aSheet.cells[i,4].Value:=FieldbyName('job').Asstring;
aSheet.cells[i,5].Value:=FieldbyName('hyjb').Asstring;
aSheet.cells[i,6].value:=FieldbyName('zmdname').AsBoolean;
i:=i+1; next;
//aSheet.SaveAs('d:\qqq.xls');
// OleContainer1.CreateobjectFromFile('d:\qqq.xls',false);
// aSheet.Application1.quit; end;
end;
你的代码很全,但是我用XLApp := CreateOleObject('Excel.Application');时,出了问题:
[Error] Unit1.pas(65): Undeclaredidentifier: 'CreateOleObject'
请问这是什么原因