Delphi中对Excel表格文件的导入和导出操作。

首先,Delphi要在Uses部分,把要使用的外部程序的类写入。在这里,我们把“ExtCtrls,ComObj”写入Uses部分。
将Listview列表中的数据导入到Excel文件中。
procedure TfreadExcel.WriteExcel;
var
  i,idex : Integer;
  ExcelApp:Variant;
begin
  try
    dlgSave.FileName := '学生信息.xls';
    if dlgSave.Execute then
    begin
      if FileExists(dlgSave.FileName) then
      begin
        try
          if application.messagebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion) = idyes then
          begin
            DeleteFile(PChar(dlgSave.FileName));
          end
          else
          begin
            dlgSave.free;
            Exit;
          end;
        except
          dlgSave.free;
          Exit;
        end;
      end;

      try
        ExcelApp:=CreateOleObject('Excel.Application');
        ExcelApp.Caption:='应用程序调用 Microsoft Excel';
        ExcelApp.WorkBooks.Add; //新增工作簿
      except
        Application.MessageBox('无法调用Excel!','提示',MB_OK);
        Exit;
      end;

      try
        idex := 1;
        for i:=0 to rzlvshow.Items.Count-1 do
        begin
          ExcelApp.Cells[idex,1].Value:=rzlvshow.Items[i].SubItems.strings[0];
          ExcelApp.Cells[idex,2].Value:=rzlvshow.Items[i].SubItems.strings[1];
          ExcelApp.Cells[idex,3].Value:=rzlvshow.Items[i].SubItems.strings[2];
          ExcelApp.Cells[idex,4].Value:=rzlvshow.Items[i].SubItems.strings[3];
          ExcelApp.Cells[idex,5].Value:=rzlvshow.Items[i].SubItems.strings[4];
          ExcelApp.Cells[idex,6].Value:=rzlvshow.Items[i].SubItems.strings[5];
          ExcelApp.Cells[idex,7].Value:=rzlvshow.Items[i].SubItems.strings[6];
          idex := idex+1;
        end;

        if ExcelApp.Worksheets[1].SaveAs(dlgSave.FileName)=0 then
        begin
          Application.MessageBox('数据导出成功!','导出提示',MB_OK);
        end;
      finally
        ExcelApp.Quit;
      end;
    end;
  except
    Application.MessageBox('保存xls文件失败!','提示',MB_OK);
    Exit;
  end;
end;



将Excel数据导入到Listivew列表中:

procedure TfreadExcel.ReadExcel;
var
  ExcelApp : Variant;
  WorkBook : OLEVARIANT;
  ExcelRowCount : Integer;
  item :TListItem;
  i,num : Integer;

begin
  try
    if dlgOpen.Execute then
    begin
      try
        num := 0;
        ExcelApp := CreateOLEObject('Excel.Application');
      except
        Application.MessageBox('excel没有安装', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
        Exit;
      end;

      rzlvshow.Items.Clear;//对ListView先进行清空
      WorkBook := ExcelApp.WorkBooks.Open(dlgOpen.FileName);//使用opendialog对话框指定
      ExcelApp.Visible := false;
      ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;      //获取Excel的行数
      SetLength(theArray, ExcelRowCount);

      for i := 1 to ExcelRowCount do
      begin
        item := rzlvshow.Items.Add;
        item.Data := Pointer(i);
        theArray[num].agreement_id := Trim(excelapp.Cells[i,1].Value);         //主协议编号
        theArray[num].asset_id     := Trim(excelapp.Cells[i,2].Value);         //资产单元编号
        theArray[num].allot_no     := Trim(excelapp.Cells[i,3].Value);         //申请书编号
        theArray[num].frozen_adjustfare := excelapp.Cells[i,4].Value;          //本金
        theArray[num].init_date    := excelapp.Cells[i,5].Value;                //交易日期
        theArray[num].remark       := Trim(excelapp.Cells[i,6].Value);         //备注

        item.SubItems.Add(IntToStr(num+1));
        item.SubItems.Add(theArray[num].agreement_id);
        item.SubItems.Add(theArray[num].asset_id);
        item.SubItems.Add(theArray[num].allot_no );
        item.SubItems.Add(FloatToStr(theArray[num].frozen_adjustfare));
        item.SubItems.Add(IntToStr(theArray[num].init_date));
        item.SubItems.Add(theArray[num].remark);
        num := num + 1;
      end;

      if ExcelRowCount=num then
      begin
        Application.MessageBox('数据导入完成!','提示',MB_OK);
      end;
      WorkBook.close;
      ExcelApp.Quit;
    end;
  except
      Application.MessageBox('文件打开失败!','提示',MB_OK);
  end;
end;


获得Excel的行和列数:

  ExcelRowCount : Integer;
  ExcelColCount : Integer;
  ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;      //获取Excel的行数
  ExcelColCount := WorkBook.WorkSheets[1].UsedRange.columns.Count;   //获取Excel的列数

对Excel文件的导入和导出就先介绍到这里,欢迎大家光临,如果哪里有讲错的请及时联系我 : 新浪邮箱:chao_song2011@sina.cn     qq:1574203887



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值