用Delphi打开Excel文件后,怎样知道其中有多少行有效数据?
解决方案 »
- CheckListBox添加时闪烁?
- 如何得到垂直滚动条移动的距离?
- Wise Installer 5.21制作安装文件,如何安装完了,重起计算机?(在线等待)
- HIGH和ORD函数运用
- 某市XX区XX镇工业分布系统----请教做过类似项目的大侠指点一二,谢谢!
- delphi filter 筛选是否受硬件的影响导致不同的结果?
- 这条SQL语句是怎么写?
- 我是个新手,请问?
- 哪里有播放FLASH动画的控件,要VCL,不要OCX。
- ADO的用法
- IWMenu的下拉单怎么被form上的IWComboBox覆盖掉
- 在其他程序的Form,如何在运行时加载 dll 中 DataModule 下的 Imagelist 控件?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExcelXP, OleServer, ComObj, Grids;type
TForm1 = class(TForm)
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
ExcelQueryTable1: TExcelQueryTable;
BitBtn1: TBitBtn;
Memo1: TMemo;
btnClear: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
StringGrid1: TStringGrid;
btnNames: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure btnNamesClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
var
AExcel, ABook, ASheet: Variant;
i: Integer;
ATime: Double;
begin
Memo1.Lines.Add(DateTimeToStr(Now));
ATime := Now;
AExcel := CreateOleObject('Excel.Application');
ABook := AExcel.WorkBooks.Open('D:\123.xls', 0);
AExcel.Visible := False;
for i := 1 to ABook.Worksheets.Count do
begin
Memo1.Lines.Add(ABook.Worksheets[i].Name);
end;
ATime := now - atime;
Memo1.Lines.Add(DateTimeToStr(Now));
Memo1.Lines.Add('用时:' + FloatToStr(ATime)); ABook.Close;
AExcel.Quit;
end;procedure TForm1.btnClearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
var
i: Integer;
ATime: Double;
begin
Memo1.Lines.Add(DateTimeToStr(Now));
ATime := Now;
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := False;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open('D:\123.xls', EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0)); for i := 1 to ExcelWorkbook1.Worksheets.Count do
begin
Memo1.Lines.Add((ExcelWorkbook1.Worksheets.Item[i] as _WorkSheet).Name);
end;
ATime := now - atime;
Memo1.Lines.Add(DateTimeToStr(Now));
Memo1.Lines.Add('用时:' + FloatToStr(ATime));
ExcelWorkbook1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;end;procedure TForm1.BitBtn3Click(Sender: TObject);
var
AExcel: Variant;
i, j: Integer;
ATime: Double;
begin
Memo1.Lines.Add(DateTimeToStr(Now));
ATime := Now;
AExcel := CreateOleObject('Excel.Application');
AExcel.WorkBooks.Open('D:\123.xls');
AExcel.Visible := False;
for i := 0 to StringGrid1.ColCount - 1 do
StringGrid1.Cols[i].Clear;
StringGrid1.ColCount := AExcel.ActiveSheet.UsedRange.Columns.Count;
StringGrid1.RowCount := AExcel.ActiveSheet.UsedRange.Rows.Count;
if StringGrid1.ColCount > 0 then
StringGrid1.ColWidths[0] := 16;
for i := 1 to AExcel.ActiveSheet.UsedRange.Rows.Count do
begin
StringGrid1.Cells[0, i] := IntToStr(i);
for j := 1 to AExcel.ActiveSheet.UsedRange.Columns.Count do
StringGrid1.Cells[j, i] := AExcel.Cells[i, j].Value;
end; AExcel.ActiveWorkBook.Close;
AExcel.Quit;
Memo1.Lines.Add(DateTimeToStr(Now));
Memo1.Lines.Add('用时:' + FloatToStr(ATime));
end;procedure TForm1.StringGrid1Click(Sender: TObject);
var
i: Integer;
ACaption: string;
begin
for i := 0 to StringGrid1.ColCount - 1 do
begin
ACaption := StringGrid1.Cells[i, 0]; ACaption := StringReplace(ACaption, '*', '', [rfReplaceAll]);
StringGrid1.Cells[i, 0] := ACaption;
end;
StringGrid1.Cells[StringGrid1.Selection.Left, 0] := '*' + StringGrid1.Cells[StringGrid1.Selection.Left, 0]
end;procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
ASelectCol: TGridRect;
begin
ASelectCol.Top := 1;
ASelectCol.Left := ACol;
ASelectCol.Right := ACol;
ASelectCol.Bottom := StringGrid1.RowCount;
CanSelect := False;
StringGrid1.Selection := ASelectCol;end;procedure TForm1.btnNamesClick(Sender: TObject);
var
AExcel, ABook, ASheet: Variant;
i: Integer;
ATime: Double;
begin
Memo1.Lines.Add(DateTimeToStr(Now));
ATime := Now;
AExcel := CreateOleObject('Excel.Application');
ABook := AExcel.WorkBooks.Open('D:\123.xls', 0);
AExcel.Visible := False;
ABook.Activate; for i := 1 to ABook.Names.Count do
begin
Memo1.lines.Add(ABook.ActiveSheet.Names[i].Name);
Memo1.Lines.Add(ABook.Name);
end;
ATime := now - atime;
Memo1.Lines.Add(DateTimeToStr(Now));
Memo1.Lines.Add('用时:' + FloatToStr(ATime)); ABook.Close;
AExcel.Quit;end;end.这个例子可以获得工作表、行数、以及工作表内的所有数据
AExcel.ActiveSheet.UsedRange.Rows.Count;行数