if(ExcelApp.cells[i,j].value <>'') then我这样写,报类型错误,我在excel里将字段设置格式为文本或者在程序里通过下面语句设置 也不行ExcelApp.ActiveWorkbook.ActiveSheet.Columns[j].NumberFormatLocal:='@';这样设置后,单元格的内容类型不是字符串吗??

解决方案 »

  1.   

    字符变量呀?  char 吗?
      

  2.   

    谢了两位,还个问题就是  如何得到 excel数据的行数和列数呢?
      

  3.   

    好像不能得到,因为EXCEL中的行数和列数都是不固定的
      

  4.   

    啊,他怎么没  rowcount,colcount 这个属性啊那怎么办? 我想一条一条读出来该怎么做呢
      

  5.   

    有空的时候看一下Excel的VBA帮助部分,可以得到很多的
    至于你的问题可以用UsedRange来解决,可参见我的代码
    var
      AExcel: Variant;
      i, j: Integer;
    begin
      AExcel := CreateOleObject('Excel.Application');
      AExcel.WorkBooks.Open('D:\123.xls');
      AExcel.Visible := False;
      for i := 0 to StringGrid1.ColCount - 1 do
        StringGrid1.Cols[i].Clear;
      StringGrid1.ColCount := AExcel.ActiveSheet.UsedRange.Columns.Count;
      StringGrid1.RowCount := AExcel.ActiveSheet.UsedRange.Rows.Count;
      if StringGrid1.ColCount > 0 then
        StringGrid1.ColWidths[0] := 16;
      for i := 1 to AExcel.ActiveSheet.UsedRange.Rows.Count do
      begin
        StringGrid1.Cells[0, i] := IntToStr(i);
        for j := 1 to AExcel.ActiveSheet.UsedRange.Columns.Count do
          StringGrid1.Cells[j, i] := AExcel.Cells[i, j].Value;
      end;  AExcel.ActiveWorkBook.Close;
      AExcel.Quit;
    end;
      

  6.   

    我是直接通过OLE连接的,基本上OLE连接可用的属性通过ExcelApp相关的组件都可以实现,实在不行可用OLE直接连,这样能更好些