用Delphi打开Excel文件后,怎样知道其中有多少行有效数据?
解决方案 »
- 关于错误处理
- 谁能提供下Delphi与C#通用的加密函数?
- 网龙公司诚聘DELPHI程序员
- 一组ADODataset+Datasource大概占用多少内存?
- 求助:如何将上载文件中的数据写到数据库中去?
- 如何取得access表的字段属性
- ListView Column问题
- 大家来帮我!!!我大学不是学的计算机专业,但我想写code,能找到工作吗?给个机会实习一下也行!!
- label中的字显示不完全
- 怎样对字符串进行拆分操作?(老大快一点,我等着要)
- 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;行数