获取excel的行和列数?(100分)

  • 主题发起人 主题发起人 gaoliang80
  • 开始时间 开始时间
G

gaoliang80

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何在delphi中得到excel表的行数和列数?
我用的是server中的ExcelApplication1, ExcelWorkBook1, ExcelWorkSheet1。
用ExcelWorkSheet1.Rows.Count得到的是65535,不是excel表的真实行数。
用ExcelWorkSheet1.usedrange.Rows.Count又报错。请问应该怎么作?
 
Excel_app.ActiveSheet.UsedRange.Rows.Count
用ActiveSheet

 
是什么错误信息?

我这儿有一个小例子,看看有没有用:

procedure TForm1.Button1Click(Sender: TObject);
begin
try
xlApp := TExcelApplication.Create(Self);
xlBook := TExcelWorkBook.Create(Self);
xlSheet := TExcelWorkSheet.Create(Self);
except
ShowMessage('Excel not installed in your computer!');
exit;
end;

xlApp.Visible[0] := True;
xlApp.AlertBeforeOverwriting[0] := False;
xlbook.ConnectTo(xlApp.Workbooks.Open('e:/book1.xls',NULL,false,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,0)); //测试打开文件,usedrange是否正常.
// xlBook.ConnectTo(xlApp.Workbooks.Add(NULL, 0)); // 测试新建book,usedrange是否正常
xlSheet.ConnectTo(xlBook.Sheets[1] as _WorkSheet);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text := format('%d,%d',[xlSheet.UsedRange[0].Rows.Count,
xlSheet.UsedRange[0].Columns.Count]);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
xlBook.Close(False);
xlApp.Disconnect;
xlApp.Quit;
xlApp.Free;
except
end;
end;


 
ExcelWorkSheet1.UsedRange[0].Columns.Count;
ExcelWorkSheet1.UsedRange[0].Rows.Count;
这个值也不是很准确,还要在读取前对第一行第一列有值是才正确
所以
var
str:string;
begin
str:=ExcelWorkSheet1.Cells.Item[1,1].Value;
if str='' then //如果为空,加一点
ExcelWorkSheet1.Cells.Item[1,1].Value:=''''; //这一点有Excel不会显示的
end;
 
楼上的这位这样做也对,就是...
 
最好自己参看下 Delphi 对于 Office 的包装(Delphi 6 已经有这个控件了)

相应的 .pas 名称是 Excel2000.pas
 
后退
顶部