3

The following code inserts a table to the Word document:

using Word = Microsoft.Office.Interop.Word;
...
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc";
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);

Word.Table oTable;
Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);
oTable.Range.ParagraphFormat.SpaceAfter = 6;
int r, c;
string strText;
for (r = 1; r <= 3; r++)
    for (c = 1; c <= 5; c++)
    {
        strText = "r" + r + "c" + c;
        oTable.Cell(r, c).Range.Text = strText;
    }

This code is from the article: http://support.microsoft.com/Default.aspx?scid=kb;en-us;316384&spid=2530&sid=47

Result is:

r1c1    r1c2    r1c3    r1c4    r1c5
r2c1    r2c2    r2c3    r2c4    r2c5
r3c1    r3c2    r3c3    r3c4    r3c5

Resulting table doesn't have borders. How can I change this code to get a table with borders, like in "Insert Table" Word command?

4

3 回答 3

11

试试这个变种:

oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderLeft].LineStyle = WdLineStyle.wdLineStyleSingle;
oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderRight].LineStyle = WdLineStyle.wdLineStyleSingle;
oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;

放入循环。

您还可以设置线宽和颜色:

oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderBottom].LineWidth = WdLineWidth.wdLineWidth050pt;
oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderBottom].Color = WdColor.wdColorRed;
于 2013-05-29T09:40:46.523 回答
11

我使用以下选项来设置所有边框,这比为每个单元格设置边框要容易得多。请注意,获取逻辑Range rng是针对 VSTO 加载项,但表逻辑保持不变。

    using Microsoft.Office.Interop.Word;
    ......
    void AddTable()
    {
      Range rng = Globals.ThisAddIn.Application.Selection.Range;
      Table tbl = rng.Tables.Add(rng, 3, 5); //make table at current selection
      tbl.Range.Font.Name = "Calibri";
      tbl.Range.Font.Size = 10.5F;
      tbl.Range.Font.Bold = 0;

      //these 2 lines put borders both inside & outside - see result image at end
      tbl.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
      tbl.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;

      for (r = 1; r <= 3; r++)
        for (c = 1; c <= 5; c++)
        {
          strText = "r" + r + "c" + c;
          oTable.Cell(r, c).Range.Text = strText;
        }

    }

结果将如下表所示,带有边框

在此处输入图像描述

希望这可以帮助。

于 2015-11-20T08:47:15.293 回答
1

您可以尝试使用以下命令:

oTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; 
oTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble;

循环使用它们。放文字后。

于 2013-05-29T08:37:22.947 回答