同上

解决方案 »

  1.   

    给你个例子:
    procedure TForm1.FillCell(i, j: byte; wTable: Variant; FieldName: String);
    begin
        wTable.Cell(i,j).Range.Text := table1.FieldByName(FieldName).AsString
    end;
    你写个逆过程就行了
      

  2.   

    to : IORILI(眼镜@_@) 
       你的意思我不明白。
      

  3.   

    一个例子
    里面含有对 Word 操作的常用方法:定位替换、表格等。
    procedure TForm1.Button1Click(Sender: TObject);
    var  WordApp,MyDoc,wTable: OLEVariant;
        FileName: string;
        i: integer;
    procedure FillRow(wTable: OLEVariant; Row,StartColumn: Byte; ss: array of String);
    var j: word;
    begin
      for j := Low(ss) to High(ss) do begin
          wTable.Cell(Row,j+StartColumn).Range.Text := ss[j];
      end;
    end;
    begin
      FileName := ExtractFileDir(Application.ExeName) + '\test1.dot';
      if not FileExists(FileName) then
          raise Exception.Create('找不到模板!');
      try
          WordApp := CreateOleObject('Word.Application');
          MyDoc := CreateOleObject('Word.Document');
      except
            Raise Exception.Create('无法打开Word,请确认已安装Word。');
      end;  WordApp.Visible := true;
      MyDoc := WordApp.Documents.Add(FileName,false);  MyDoc.BookMarks.Item('表名1').Select;
      WordApp.Selection.Text := 'Animals';
      wTable := MyDoc.Tables.Item(1);
      table1.First;
      for i := 2 to 4 do begin
          if not Table1.Eof then begin
              FillCell(i,1,wtable,'Name');
              FillCell(i,2,wtable,'Size');
              FillCell(i,3,wtable,'Area');
              Table1.Next
          end else Break
      end;  wTable := MyDoc.Tables.Item(2);
      table1.First;
      for i := 1 to 3 do
          if not table1.Eof then begin
              FillRow(wTable,i,2,[table1.fieldbyName('Name').AsString,
                table1.FieldByName('Size').AsString,
                table1.FieldByName('Area').AsString]);
              table1.Next
          end;  MyDoc.Tables.Add(MyDoc.Books.Item('表格3').Range,2,5)
    end;procedure TForm1.FillCell(i, j: byte; wTable: Variant; FieldName: String);
    begin
        wTable.Cell(i,j).Range.Text := table1.FieldByName(FieldName).AsString
    end;
      

  4.   

    上面的程序中就用到了你所说的:单元格
    wTable := MyDoc.Tables.Item(1);
      

  5.   

    不过我觉得你所说的:WORD中的单元格(宽度固定的单元格)中可写字符个数的说法,不对吧,因为就算宽度一定,即使内容很多的话,他也会自动向下拉长的,不信你就试试
    :)
      

  6.   

    那你知道你的word中的文字的设置了吗,你知道你单元格的烈属了吗???
    很多的
      

  7.   

    宽度固定的单元格,是“不允许单元格适应文字”,因为因为单元格宽度通常都不会与文字长度匹配,既然单元格的宽度是固定的,那么就只有“文字去适应单元格”,也就是说文字要自动的换行,但是宽度固定的单元格并没有说单元格的高度也固定,那么随着文字的换行,单元格的高度也会增加。另外这个应该与单元格中文字所采用的字体字号有关。我以前曾经做过一段时间的VBA开发,好像没有看到有什么“WORD中的单元格(不管单元格宽度是否确定)中可写字符个数”这样一种说法,也许是我才疏学浅吧,还往各位高手指教,小弟愿与楼主共同进步
      

  8.   

    以下是我找来和你这个题有关的一些文档
    都是单元格类型的一些属性(CELL类型)FitText 属性
    请参阅 应用于 示例 特性 
    如果该属性值为 True,则 Microsoft Word 会减小键入单元格中的文字的可视大小,使其适应列宽。Boolean 类型,可读写。说明
    如果将 FitText 设置为 True,则虽然字体尺寸没有改变,但将调整字符的可视宽度,使单元格可容纳所有键入的文字。示例
    本示例实现的功能是:设定所选内容的第一单元格在其宽度内自动调整键入的文字大小。Selection.Cells(1).FitText = TruePreferredWidth 属性
    请参阅 应用于 示例 特性 
    应用于 Cell、Cells、Column、Columns 和 Table 对象的 PreferredWidth 属性。返回或设置指定的单元格、列或表格的首选宽度(以磅为单位或表示为窗口宽度的百分比)。Single 类型,可读写。expression.PreferredWidthexpression   必需。该表达式返回以上一个对象。WordWrap 属性
    请参阅 应用于 示例 特性 
    应用于 Cell 对象的 WordWrap 属性。如果该属性值为 True,则 Microsoft Word 使文本自动换行并加长单元格,使单元格的宽度保持相同。Boolean 类型,可读写。expression.WordWrapexpression   必需。该表达式返回一个 Cell 对象。
      

  9.   

    你是说能看见的区域吗?如果你的单元格设定为高宽都是固定的,FitText 属性又不是TRUE,那就得算了,比较麻烦