C# 带边框的 Word 表格
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16808928/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Word table with borders
提问by Alex F
The following code inserts a table to the Word document:
以下代码将表格插入到 Word 文档中:
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
此代码来自文章: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?
结果表没有边框。如何更改此代码以获取带边框的表格,例如“插入表格”Word 命令?
采纳答案by Rim4i4ok
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;
回答by Rim4i4ok
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.
循环使用它们。放文字后。
回答by Mr.Hunt
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 rngis for VSTO add-in, but the table logic remains same.
我使用以下选项来设置所有边框,这比为每个单元格设置边框要容易得多。请注意,获取的逻辑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;
}
}
Result will be like table below with borders
结果将如下表带边框
Hope this helps.
希望这可以帮助。


