我要一段把读取EXCEL文档的代码!

sousouwjh 2004-04-24 08:40:59
我要一段把读取EXCEL文档的代码!
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sousouwjh 2004-04-24
  • 打赏
  • 举报
回复
TO:alexanda2000(电脑学习者) 这个createoleobject是要引用ComObj单元
sousouwjh 2004-04-24
  • 打赏
  • 举报
回复
非也,还是OLE方法好!我就是想要这样的效果!
好了,结账!
多谢 qxj(游民(忘记一切,重新开始)) 和 Delphinus(西瓜大王)
welllove88 2004-04-24
  • 打赏
  • 举报
回复
我觉得ADO比较好用 并且对ADO程序员来讲 操作起来更是得心应手
alexanda2000 2004-04-24
  • 打赏
  • 举报
回复
这个createoleobject是在哪个单元的呢?编绎的时候老是说这个命令未定义。
delphinus 2004-04-24
  • 打赏
  • 举报
回复
方法一:用ado
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 2004-04-24
  • 打赏
  • 举报
回复
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;
sousouwjh 2004-04-24
  • 打赏
  • 举报
回复
我要一段把读取EXCEL文档的代码!读到一个容器里!比如memo!或stringgrid
alexanda2000 2004-04-24
  • 打赏
  • 举报
回复
多谢楼主!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧