在delphi中如何获得excel文件的指定sheet的指定行列的值?谢谢!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
        v:=CreateOleObject('Excel.Application');
        v.Visible:=CheckBox1.Checked;
        if MessageDlg('新建还是打开:是否新建Excel 文件?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
          begin
            v.WorkBooks.Add; //新建Excel 文件
            v.WorkBooks[1].WorkSheets[1].name:='电脑报';//第一页标题
            v.WorkBooks[1].WorkSheets[2].name:='编程乐园';
            v.WorkBooks[1].WorkSheets[3].name:='都来看呀';
            Sheet:=v.WorkBooks[1].WorkSheets[1];
            Sheet.Cells[1,1]:='好看';//单元格内容
            Sheet.Cells[1,2]:='确实';
            Sheet.Cells[2,1]:='我喜欢';
          end
        else
          if OpenDialog1.Execute then
            v.WorkBooks.Open(Opendialog1.FileName)
          else
            exit;
      except
        showmessage('初始化Excel失败,可能没装Excel,或者其他错误;请重新再试。');
        v.DisplayAlerts:=false;//是否提示存盘
        v.Quit;//退出Excel
        exit;
      end;
      Application.Restore;
      Application.BringToFront;
    end;
      

  2.   

    var                      //uses comobj
      pc_i:integer;
      xlapp,sheet: variant;
      WBK: OleVariant;
    begin
      xlapp := createoleobject('excel.application');
      if Trim(Edit1.Text)='' then
      begin
        Application.MessageBox('文件名不能为空','警告',MB_OK);
        Exit;
      end;
      WBK := xlapp.workbooks.Open(Edit1.Text);
      sheet := xlapp.workbooks[1].worksheets['sheet1'];
      pc_i:=1;
      Edit2.Text := sheet.cells[pc_i,1];     //写入的话用 sheet.cells[pc_i,1] := Edit2.Tex;
      WBK.Close(SaveChanges := True);
      xlapp.Quit;
    end;
    这是读出Excel文件的代码,
      

  3.   


    var
     onestr1:string
     i,j,a:integer;
     Msexcel:Variant;
    begin   
        MSexcel:=Createoleobject('Excel.Application');
        MSexcel.Visible:=false;
        MSexcel.WorkBooks.Add(openDialog1.FileName);
        MSexcel.WorkSheets[a].Activate;//a为指定第几个sheet
        onestr1:=MSexcel.Cells[i,j].Value;//i为行j为列
    end;
      

  4.   

    如使用控件(一个ExcelApplication,一个ExcelWorksheet1)
    var
     onestr1:string
     i,j,a:integer;
    begin   
         ExcelApplication1.Connect;
         ExcelApplication1.Visible[0]:=false;
         ExcelApplication1.WorkBooks.Add(Edit1.Text,0);
         ExcelWorksheet1.ConnectTo(ExcelApplication1.Workbooks[1].Worksheets[a] as  _Worksheet);;//a为指定第几个sheet
        onestr1:=ExcelWorksheet1.Cells.item[i,j];//i为行j为列
    end;