Powershell msword table 格式化单元格文本
Powershell msword table format cell text
使用 powershell 可以像这样在 table 单元格中添加文本,现在我想格式化单元格文本。
table.Cell(1, 1).Range.Text = "ListvItem1
vitem2"
例如。
我想加粗并居中对齐 "List" 字符串。为 Item1 和 Iteam2 字符串应用有序项目样式。
我如何使用 powershell 执行此操作?
编辑:
在 C# 中找到此代码,无法使其在 powershell 中工作。
//boldrange_1 for "green", boldrange_2 for "inch".
Word.Range boldrange_1 = table.Cell(1, 2).Range;//Assign the whole cell range to boldrange, then adjust it with SetRange method.
boldrange_1.SetRange(table.Cell(1, 2).Range.Start, table.Cell(1, 2).Range.Words[1].End);
boldrange_1.Bold= 1;
Word.Range boldrange_2 = table.Cell(2, 2).Range;
boldrange_2.SetRange(table.Cell(2, 2).Range.Words[4].End, table.Cell(2, 2).Range.Words[5].End);
boldrange_2.Font.Bold = 1;
//I've found that boldrange_2.Font.Bold = 1; and boldrange_2.Bold = 1; have the same effect.
将字体设置为粗体或正常实际上并不难,是的,只需要使用 set-range。更改对齐方式或将单词设置为列表有点棘手,因为您必须在单独的段落中设置元素,而典型的方法(使用 TypeParagraph 和 TypeText)在 table 单元格中不起作用。此方法适用于我,但段落设置和 table 设置需要根据您的具体需要进行更改。
#This is just creating a simple table for testing
$w = New-Object -ComObject "word.application"
$w.Visible = $true
$doc = $w.Documents.add()
$r = $doc.Range()
$table = $doc.Tables.add($r, 5, 5)
$list = $table.Cell(1,1).Range #so sel doesn't have to be rewritten by hyperlinks
$sel = $table.Cell(1,1).Range #this is because the hyperlinks break indexof
$hyper = $table.Cell(1,1).Range #doing assign this way for emphasis could do easier
#Define full text for spliting up into ranges and setup paragraphs
$sel.InsertParagraph()
$w.Selection.TypeText("HyperLink`n`rList`r`nItem1`r`nItem2")
#Set up the hyperlink (use -2 to keep `n`r for paragraph)
$hyper.SetRange(0, $sel.Text.IndexOf("List") - 2)
$list.SetRange($sel.Text.IndexOf("List"), $sel.Text.Length)
$sel.SetRange($sel.Text.IndexOf("Item"), $sel.Text.Length)
$doc.Hyperlinks.Add($hyper, 'www.google.com', $null, $null, "Link to Google")
#set List range of cell to bold and alignment center
$list.Bold = $true
$list.paragraphFormat.Alignment = 'wdAlignParagraphCenter'
#Now using sel range: add paragraph break (so list only applies to this)
#Then set alignment and apply a number list
$sel.InsertParagraphBefore()
$sel.paragraphFormat.Alignment = 'wdAlignParagraphRight'
$sel.ListFormat.ApplyNumberDefault()
更新:清理代码并添加超链接构建方法
使用 powershell 可以像这样在 table 单元格中添加文本,现在我想格式化单元格文本。
table.Cell(1, 1).Range.Text = "ListvItem1
vitem2"
例如。 我想加粗并居中对齐 "List" 字符串。为 Item1 和 Iteam2 字符串应用有序项目样式。 我如何使用 powershell 执行此操作?
编辑: 在 C# 中找到此代码,无法使其在 powershell 中工作。
//boldrange_1 for "green", boldrange_2 for "inch".
Word.Range boldrange_1 = table.Cell(1, 2).Range;//Assign the whole cell range to boldrange, then adjust it with SetRange method.
boldrange_1.SetRange(table.Cell(1, 2).Range.Start, table.Cell(1, 2).Range.Words[1].End);
boldrange_1.Bold= 1;
Word.Range boldrange_2 = table.Cell(2, 2).Range;
boldrange_2.SetRange(table.Cell(2, 2).Range.Words[4].End, table.Cell(2, 2).Range.Words[5].End);
boldrange_2.Font.Bold = 1;
//I've found that boldrange_2.Font.Bold = 1; and boldrange_2.Bold = 1; have the same effect.
将字体设置为粗体或正常实际上并不难,是的,只需要使用 set-range。更改对齐方式或将单词设置为列表有点棘手,因为您必须在单独的段落中设置元素,而典型的方法(使用 TypeParagraph 和 TypeText)在 table 单元格中不起作用。此方法适用于我,但段落设置和 table 设置需要根据您的具体需要进行更改。
#This is just creating a simple table for testing
$w = New-Object -ComObject "word.application"
$w.Visible = $true
$doc = $w.Documents.add()
$r = $doc.Range()
$table = $doc.Tables.add($r, 5, 5)
$list = $table.Cell(1,1).Range #so sel doesn't have to be rewritten by hyperlinks
$sel = $table.Cell(1,1).Range #this is because the hyperlinks break indexof
$hyper = $table.Cell(1,1).Range #doing assign this way for emphasis could do easier
#Define full text for spliting up into ranges and setup paragraphs
$sel.InsertParagraph()
$w.Selection.TypeText("HyperLink`n`rList`r`nItem1`r`nItem2")
#Set up the hyperlink (use -2 to keep `n`r for paragraph)
$hyper.SetRange(0, $sel.Text.IndexOf("List") - 2)
$list.SetRange($sel.Text.IndexOf("List"), $sel.Text.Length)
$sel.SetRange($sel.Text.IndexOf("Item"), $sel.Text.Length)
$doc.Hyperlinks.Add($hyper, 'www.google.com', $null, $null, "Link to Google")
#set List range of cell to bold and alignment center
$list.Bold = $true
$list.paragraphFormat.Alignment = 'wdAlignParagraphCenter'
#Now using sel range: add paragraph break (so list only applies to this)
#Then set alignment and apply a number list
$sel.InsertParagraphBefore()
$sel.paragraphFormat.Alignment = 'wdAlignParagraphRight'
$sel.ListFormat.ApplyNumberDefault()
更新:清理代码并添加超链接构建方法