标题:[求助]怎么把Excel文件到导入到Delphi中
只看楼主
sunhaigangs
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-10
 问题点数:0 回复次数:2 
[求助]怎么把Excel文件到导入到Delphi中

求教怎么把Excel文件到导入到Delphi中,并且按所要查找的某个文件导入的

搜索更多相关主题的帖子: Delphi中 Excel文件 
2006-03-10 09:24
Wolf_007
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-26
得分:0 
EXCEL怎样导入导出数据库
//导出数据到excel
procedure CopyDbDataToExcel(Target: TDbgrid);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//通过ole创建Excel对象
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add[XLWBatWorksheet];
XLApp.WorkBooks[1].WorkSheets[1].Name := '对帐工作薄';
Sheet := XLApp.Workbooks[1].WorkSheets['对帐工作薄'];
if not Target.DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
Target.DataSource.DataSet.first;
for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[1, iCount + 1] := Target.Columns.Items[iCount].Title.Caption;
end;
jCount := 1;
while not Target.DataSource.DataSet.Eof do
begin
for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[jCount + 1, iCount + 1] := Target.Columns.Items[iCount].Field.AsString;
end;
Inc(jCount);
Target.DataSource.DataSet.Next;
end;
XlApp.Visible := True;
Screen.Cursor := crDefault;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var i,j:integer;
opendialog1:Topendialog;
s0,s1,s2:string;
begin
try
opendialog1:=Topendialog.Create(self);
opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
if opendialog1.Execute then
begin
Try
ExcelApplication1.Connect;//EXCEL应用程序
Except
Messagebox(0,'Excel 可能没有安装!!','提示!',mb_Ok);
exit;
End;
ExcelApplication1.Visible[0]:=false;
ExcelApplication1.Caption:='Excel Application';
try
excelapplication1.Workbooks.Open(opendialog1.FileName,
null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件
except
begin
ExcelApplication1.Disconnect;//出现异常情况时关闭
ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');
exit;
end;
end;

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
//ExcelWorkbook1与Eexcelapplication1建立连接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//Excelworksheet1与Excelworkbook1建立连接
//开始从EXCEL中取数,取完数后关闭EXCEL
for i:=1 to 10000 do//最大取值10000
begin
if trim(excelworksheet1.cells.item[i+1,1])<>'' then
begin
s0:= excelworksheet1.cells.item[i+1,1];
s1:= excelworksheet1.cells.item[i+1,2];
s2:= excelworksheet1.cells.item[i+1,3];
with qry do
begin
close;
sql.Clear;
sql.add('insert into xsz(PZNO,PNO,TCount,inday)values('+
''''+s0+''''+','+''''+s1+''''+','+''''+s2+''''+','+''''+datetostr(date)+''')');
ExecSQL;
end;
end
end;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;

with qryxsz do
begin
sql.Clear;
sql.Add('select * from xsz order by PZNO,PNO,TCount,inday');
open;
end;
for j:=0 to grdxsz.Columns.Count do
grdxsz.Columns[j].Width:=64;//缩小宽度
messagebox(0,'文件已经导入数据库!','完成!',mb_ok);
except
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
exit;
// messagebox(0,'文件已经导入数据库失败!','完成!',mb_iconError+mb_ok);
end;
end;

try
if qryxsz.RecordCount<1 then exit;
CopyDbDataToExcel(Grdxsz);
except
// messagebox(0,'请安装EXCEL软件,再使用本功能。','提示',mb_ok);
exit;
end;

这是别人的代码,我保留了,给你看看
在一个对帐系统中用到的将两张excel表中的数据到如数据库进行相应处理后再导出excel.
2006-03-26 16:19
ysp_1984
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:371
专家分:0
注 册:2006-1-5
得分:0 

谢谢上楼,我也正需要这个。

[此贴子已经被作者于2006-3-30 16:55:26编辑过]


心中的那片蓝天,永远为你而存在... ...
2006-03-30 16:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-49479-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.611331 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved