导航
  • 主页
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

从不知道,如何用程序将数据导入一个Excel的文件里

zkfly 2001-09-16 11:05:40
例如:我从数据库中提取了一些数据,然后想把这些数据保存在一个Excel文件里,如何解决。请高手赐教。
...全文
37 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tikkypeng 2001-09-16
看看下面代码~~研究研究~~

procedure DataToExcel(Grid:TDbGrid;DataSet:TDataset;Title:String;sExcelFile:String);
var
i,j,Row:integer;
WB: _WorkBook;
WBs: Workbooks;
FExcelWasFound:Boolean;
ExcelFile:string;
FileHandle: integer;
irange:range;
iWidth:integer;
//oFont:olevariant;
begin
try
Screen.Cursor :=crHourGlass ;
{for i:=0 to Grid.Columns.Count -1 do
begin
Dataset.Fields[i].DisplayWidth :=Grid.Columns[i].Width;
end; }
ExcelFile:=sExcelFile;
if not fileExists(ExcelFile) then
begin
FileHandle:=FileCreate(ExcelFile);
Fileclose(FileHandle);
end;
FExcelWasFound := True;
try
FApp := CreateOleObject('Excel.Application.9') as _Application; //调用Excel2000
except
FExcelWasFound := False;
end;
if not FExcelWasFound then //如果不存在,则调用Excel97
try
FApp := CreateOleObject('Excel.Application.8') as _Application;
FExcelWasFound := True;
except
FExcelWasFound := False;
ShowMessage('Excel调用失败!');
end;
if FExcelWasFound then
begin
InitVariables;
New(FSPms);
with FApp ,FSPms^ do
begin
App_SheetsInNewWorkbook := Get_SheetsInNewWorkbook(0);
App_DisplayFormulaBar := Get_DisplayFormulaBar(0);
App_ReferenceStyle := Get_ReferenceStyle(0);
App_DisplayStatusBar := Get_DisplayStatusBar(0);
Set_SheetsInNewWorkbook(0, 1);
WBs := Get_Workbooks; //打开Excel文件
WB := WBs.Open(excelFile, 3, false, 1,
'', '', True, $00000002, 1, False,
False, Null, False, 0);
MakeVBScript(WB); //初始化文件属性
end;
with FApp do
begin
Set_DisplayFormulaBar(0, False);
Set_ReferenceStyle(0, Integer(xlR1C1));
Set_DisplayStatusBar(0, False);
Set_Caption(Title);
end;
try
Row:=1;
irange:=Fapp.ActiveCell ;
irange.Font.Size :=9;
for j:=0 to Grid.FieldCount -1 do
begin
if Grid.Columns[j].Visible =true then
begin
if DataSet.Fields[j].displaywidth>254 then
iRange.ColumnWidth:=100
else
begin
//iWidth:=Grid.Columns[j].Width;
iRange.ColumnWidth :=Grid.Columns[j].Field.DisplayWidth ;
end;
irange.Font.Size :=9; //ljq 2001/03/09
irange.value:=Grid.Columns[j].Title.Caption ;
irange:=irange.Next;
end;
end;
except
ShowMessage('调用Excel出错!');
fApp._Release;
Screen.Cursor :=crDefault ;
exit;
end;
Row:=Row+2;
DataSet.DisableControls;
DataSet.First;
FApp.Get_ActiveWindow.DisplayZeros := True;
irange.NumberFormat:=10;
for i:=0 to DataSet.RecordCount -1 do
begin
irange:=Fapp.Range['A'+IntToStr(Row),'A'+intToStr(Row)];
for j:=0 to Grid.FieldCount -1 Do
begin
if Grid.Columns[j].Visible =True then
begin
if Grid<>nil then
begin
iRange.Font.Size :=Grid.Font.Size;
iRange.Font.Name :=Grid.Font.Name;
end
else
begin
irange.Font.Size :=FFontSize;
irange.Font.Name :=FFontName;
end; //edit by ljq 2001/03/09
iRange.Value :=Grid.Columns[j].Field.AsString ;
irange:=iRange.Next ;
end;
end;
DataSet.next;
Row:=Row+1;
end;
Screen.Cursor :=crDefault ;
DataSet.EnableControls;
irange:=FApp.Range['A1','K'+intToStr(Row-1)];
FApp.Set_Visible(0,True);
CreateToolBar(False); //屏蔽Excel的系统菜单,采用自定义菜单实现
end else
begin
ShowMessage('调用Excel2000或Excel97失败,请确认是否安装!'+#13#13+' 如果未安装,请先安装office');
Screen.Cursor :=crDefault ;
end;
except
ShowMessage('调用Excel出错!');
fApp._Release;
Screen.Cursor :=crDefault ;
exit;
end;
end;
回复
tikkypeng 2001-09-16
循环~~根据数据库记录数量循环给Excel附值~~
回复
发动态
发帖子
Delphi
创建于2007-08-02

4810

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告