我要一段把读取EXCEL文档的代码! 我要一段把读取EXCEL文档的代码! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我要一段把读取EXCEL文档的代码!读到一个容器里!比如memo!或stringgrid 1.ole try xlapp := createoleobject('excel.application'); except showmessage('无法打开Xls文件,请确认已经安装EXCEL!'); exit; end; filename := EdtPath.Text; xlapp.WorkBooks.Open('E:\TEST.XLS'); Sheet :=xlapp.workbooks[1].worksheets[1]; for i:=1 to sheet.usedRange.Cells.rows.count do memo1.lines.add(sheet.cells[i,2].value) xlapp:=unassigned; 2.直接用ADO.with qrySel do begin ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '+ 'e:\test.xls' + ';Extended Properties=Excel 8.0;'; Close; SQL.Clear; sql.Add('SELECT * FROM [Sheet1$]'); try Open; except end; end; 方法一:用adoconnectstring: Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=F:\Leewei\Books\Delphi5\Book3\ADODemos\Excel\forcast.xls;Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False 用adotable,直接设置adotable.tabledirect:=true,就可以了。 或者在excel中选择所需数据设置一个名称作为一个表名。方法二:用ole///////////////procedure TPPms010.LoadExcelFile(FileName:string); var i,j: integer; rows,cols:integer; ExcelApp, WorkBook, WorkSheet : Variant; strLst:Tstringlist; begin inherited; cols:=41; strLst:= TstringList.Create ; try ExcelApp := CreateOleObject('Excel.Application'); except on E:EolesysError do begin DispErr(E.Message); abort; end else begin DispErr('PPMS010-04 Could not Create Excel Application!'); abort; end; end; try try ExcelApp.WorkBooks.Open(edtDir.text,,True); WorkBook:=ExcelApp.ActiveWorkbook; WorkSheet:=WorkBook.ActiveSheet; except DispInf('PPMS010-05 Can''t open file!', MB_OK + MB_ICONINFORMATION); abort; end; dmppms010.QryAm_Allocation_head.Append ; SetHeadValues; rows:=GetSheetRows(WorkSheet); PrgrsBar.Max:=rows; PrgrsBar.step:=1; PrgrsBar.Show; for i:=1 to rows do begin strLst.Clear ; for j:=1 to cols do strLst.Add(string(WorkSheet.Cells[i,j])); dmppms010.QryAm_Allocation_Line.Append; SetLineValues(strLst,FileType); PrgrsBar.StepIt ; end; finally strLst.free; WorkBook.Close; ExcelApp.Quit; ExcelApp:= unassigned; PrgrsBar.Hide ; end; end; 这个createoleobject是在哪个单元的呢?编绎的时候老是说这个命令未定义。 我觉得ADO比较好用 并且对ADO程序员来讲 操作起来更是得心应手 非也,还是OLE方法好!我就是想要这样的效果!好了,结账!多谢 qxj(游民(忘记一切,重新开始)) 和 Delphinus(西瓜大王) TO:alexanda2000(电脑学习者) 这个createoleobject是要引用ComObj单元 字符串不理解? 为什么TClientDataSet不能将数据提交给数据库呢? 请教:用GDI压缩JPG的图像质量问题 现有DBGIRDEH控件,请问如何让每一数据行也打印表头!!急!急!急! 关于SaveDialog1的取消 一个新的方案, 三层结果,如何在客户端向数据库服务器中添加记录? 怎样可以删除某一文件夹下的同类型文件 Delphi 如何计算DBGridEH 列 = 列值+文本框值 WIN10上不能打开DELPHI程序 如果使用DELPHI取得主版序列号,硬盘序列号,计算机名。请举个列子,谢谢了。 关于用ServerSocket和ClientSocket传送文件的问题,请高手指点!!
try
xlapp := createoleobject('excel.application');
except
showmessage('无法打开Xls文件,请确认已经安装EXCEL!');
exit;
end;
filename := EdtPath.Text;
xlapp.WorkBooks.Open('E:\TEST.XLS');
Sheet :=xlapp.workbooks[1].worksheets[1];
for i:=1 to sheet.usedRange.Cells.rows.count do
memo1.lines.add(sheet.cells[i,2].value)
xlapp:=unassigned;
2.直接用ADO.
with qrySel do
begin
ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '+ 'e:\test.xls' + ';Extended Properties=Excel 8.0;';
Close;
SQL.Clear;
sql.Add('SELECT * FROM [Sheet1$]');
try
Open;
except
end;
end;
connectstring:
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=F:\Leewei\Books\Delphi5\Book3\ADODemos\Excel\forcast.xls;Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
用adotable,直接设置adotable.tabledirect:=true,就可以了。
或者在excel中选择所需数据设置一个名称作为一个表名。方法二:用ole
///////////////
procedure TPPms010.LoadExcelFile(FileName:string);
var
i,j: integer;
rows,cols:integer;
ExcelApp, WorkBook, WorkSheet : Variant;
strLst:Tstringlist;
begin
inherited;
cols:=41;
strLst:= TstringList.Create ;
try
ExcelApp := CreateOleObject('Excel.Application');
except
on E:EolesysError do
begin
DispErr(E.Message);
abort;
end
else
begin
DispErr('PPMS010-04 Could not Create Excel Application!');
abort;
end;
end;
try
try
ExcelApp.WorkBooks.Open(edtDir.text,,True);
WorkBook:=ExcelApp.ActiveWorkbook;
WorkSheet:=WorkBook.ActiveSheet;
except
DispInf('PPMS010-05 Can''t open file!', MB_OK + MB_ICONINFORMATION);
abort;
end;
dmppms010.QryAm_Allocation_head.Append ;
SetHeadValues;
rows:=GetSheetRows(WorkSheet);
PrgrsBar.Max:=rows;
PrgrsBar.step:=1;
PrgrsBar.Show;
for i:=1 to rows do
begin
strLst.Clear ;
for j:=1 to cols do
strLst.Add(string(WorkSheet.Cells[i,j]));
dmppms010.QryAm_Allocation_Line.Append;
SetLineValues(strLst,FileType);
PrgrsBar.StepIt ;
end;
finally
strLst.free;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:= unassigned;
PrgrsBar.Hide ;
end;
end;
好了,结账!
多谢 qxj(游民(忘记一切,重新开始)) 和 Delphinus(西瓜大王)