Delphi 导入 Execl

打开过滤Execl表格
在这里插入图片描述

uses ComObj;

procedure TForm1.cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  OpenDlg: TOpenDialog;
  strFileName: string;
begin
  OpenDlg := TOpenDialog.Create(nil);
  try
    OpenDlg.Filter := 'execl|*.xls;*xlsx';
    OpenDlg.Title := '打开Excel文件';
    OpenDlg.FileName := '';
//    OpenDlg.DefaultExt := '*.xls;*.xlsx';
    if OpenDlg.Execute then
    begin
      strFileName := Trim(OpenDlg.FileName);
      if strFileName <> '' then
      begin
        ed_dir.Text := strFileName;
      end;
    end;
  finally
    FreeAndNil(OpenDlg);
  end;
end;

导入Execl内容处理
在这里插入图片描述

procedure TForm1.bt_importClick(Sender: TObject);
var
  ExcelApp: Variant;
  rowcount, colcount, i, j: Integer;
  w: TWideStringField;
  CdsTmp: TClientDataSet;
begin
  screen.Cursor := crHourGlass;

  try
    // 创建一个excel的ole对象
    ExcelApp := CreateOleObject('Excel.Application');

    // 打开一个excel文件
    ExcelApp.WorkBooks.Open(ed_dir.Text);

    ExcelApp.worksheets[1].Activate;
    rowcount := ExcelApp.worksheets[1].UsedRange.Rows.Count; //获取表格行
    colcount := ExcelApp.worksheets[1].UsedRange.Columns.Count; //获取表格列

    if colcount > 0 then
    begin
      try
        CdsTmp := TClientDataSet.Create(nil);
        CdsTmp.Close;
        CdsTmp.FieldDefs.Clear;

        //获取字段标题
        for i := 1 to colcount do
        begin
          w := TWideStringField.Create(CdsTmp);
          w.Name := ExcelApp.Cells[1, i].value;
          w.FieldName := ExcelApp.Cells[1, i].value;
          w.DataSet := CdsTmp;
          w.FieldKind := fkdata;
//        w.Size := CDS.Fields[i].Size;
        end;

        CdsTmp.CreateDataSet;
        CdsTmp.Open;
        CdsExecl.DisableControls;
        //获取表格值
        for i := 2 to rowcount do
        begin
          CdsTmp.Append;
          for j := 1 to colcount do
          begin
            CdsTmp.FieldByName(ExcelApp.Cells[1, j].value).AsString := ExcelApp.Cells[i, j].value;
          end;
        end;
        CdsTmp.Post;

        CdsExecl.Data := CdsTmp.Data;
      finally
        CdsExecl.EnableControls;
        CdsTmp.Free;
      end;
    end;
  finally
    SCREEN.CURSOR := CRDEFAULT;
    ExcelApp.WorkBooks.Close;
    ExcelApp.Quit;
  end;
end;

导入效果
在这里插入图片描述

剩下就在Delphi中处理数据,要修改,要保存就自行处理。

给自己看的笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值