Excel OLE 读取筛选后的数据

//uses comobj

procedure Tfrm1.Button1Click(Sender: TObject);
var
  ExcelApp, Sheet, MySheet: OleVariant;
  strExcelFile, str_SheetName: string;
  i, iTotRows: integer;
begin
  inherited;
  with TOpenDialog.Create(nil) do
  begin
    DefaultExt := 'xls';
    Filter := 'Excel 文件(*.xlsx;*.xls)|*.xlsx;*.xls';
    //InitialDir := glbStrExcelPath; //缺省路径
    FileName := '';
    title := '导入Excel筛选数据 ';

    if Execute then
    begin
      strExcelFile := FileName;
    end;
 end;
  ExcelApp := CreateOleObject('Excel.Application');
  try
    ExcelApp.workBooks.Open(strExcelFile);
    ExcelApp.DisplayAlerts := False; //屏蔽 ExcelApp.Quit时 "是否保存Sheet1?"对话框
    ExcelApp.visible := False; //可见
    str_SheetName := ExcelApp.Workbooks[1].Worksheets[1].Name;
    sheet := ExcelApp.workbooks[1].worksheets[str_SheetName];
   // ShowMsg('总行数:' + VarToStr(ExcelApp.ActiveSheet.usedRange.Rows.count));
   //iTotRows:= sheet.UsedRange.Rows.count;

    //ExcelApp.ActiveSheet.UsedRange.Copy;
    sheet.UsedRange.Copy;//复制已经筛选的数据
    MySheet := ExcelApp.WorkSheets.Add;、//插入新的工作表
    MySheet.Paste; //新的工作表中粘贴

    ... // 然后从新的工作表中读取内容

  finally
    Screen.Cursor := crDefault;
    ExcelApp.Quit;
  end;
end;

posted @ 2013-11-12 11:44  seanpeng  阅读(360)  评论(0)    收藏  举报