我用stringgrid或dbgrid连接excel,但他们一遇到excel中的合并单元格就自动跳出来了,下面的资料就看不到了,请问各位前辈有什么好的方法,能使得Delphi中显示出含有合并单元格后的excel啊?

解决方案 »

  1.   

    自己代码处理吧,delphi没那么智能
      

  2.   

    我是个新手,不太懂得怎么处理,各位大哥,帮帮小弟,给点代码好不,
    我的代码是:
    var
      i : integer;
      j : integer;
      EParam : OleVariant;
      DocuType : OleVariant;
      wkbk : _WorkBook;
    begin
      StringGrid1.RowCount:=1;
      opendialog1.InitialDir:=ExtractFileDir(paramstr(0));
      //文件打开的初始路径
      opendialog1.Execute;  Try
        ExcelApplication1.Connect;
      Except
        Showmessage('Excel文件打开失败!');
        Exit;
      End;  ExcelApplication1.Visible[0]:=False;
      ExcelApplication1.Caption:='Excel数据文件';  EParam:=EmptyParam;
      DocuType:=0;
      try
        wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType);    wkBk:=ExcelApplication1.WorkBooks.Open(opendialog1.FileName,EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,DocuType,EmptyParam,DocuType);
      except
        begin
          ExcelApplication1.Disconnect;//出现异常情况时关闭
          ExcelApplication1.Quit;
          showmessage('请选择EXCEL数据表格!');
          exit;
        end;
      end;  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接
      ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接  //开始从EXCEL中取数,放到stringgrid中,取完数后关闭EXCEL
      for i:=1 to 10 do
        for j:=1 to 4 do
          begin
            if trim(excelworksheet1.cells.item[i+1,1])<>'' then
              begin
                StringGrid1.rowCount:=i+2;
                StringGrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i,j];
              end
            else
              begin
              exit;
              end;
          end;
        ExcelApplication1.Disconnect;
        ExcelApplication1.Quit;