Word table with borders

你说的曾经没有我的故事 提交于 2019-12-18 05:21:21

问题


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?


回答1:


Try this variant:

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;

Put in cycle.

Also you can set line width and color:

oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderBottom].LineWidth = WdLineWidth.wdLineWidth050pt;
oTable.Cell(r, c).Range.Borders[WdBorderType.wdBorderBottom].Color = WdColor.wdColorRed;



回答2:


I used the following options to set all borders and it is quite easier than settings borders for every cell. Please note that the logic for getting Range rng is for VSTO add-in, but the table logic remains same.

    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;
        }

    }

Result will be like table below with borders

Hope this helps.




回答3:


You can try to use this commands:

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

Use them in cycle. After putting the text.



来源:https://stackoverflow.com/questions/16808928/word-table-with-borders

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!