从MS Word表格中提取不带项目符号的文本[Powershell 4.0]

从MS Word表格中提取不带项目符号的文本[Powershell 4.0],powershell,powershell-4.0,Powershell,Powershell 4.0,我想从ms word中的某个特定表格中提取一些文本: 但是,当我执行代码时: $objWord = New-Object -ComObject Word.Application $objWord.Visible = $true $filename = 'D:\test.docx' $objDocument = $objWord.Documents.Open($filename) $LETable = $objDocument.Tables.Item(1) $LETableCols = $LET

我想从ms word中的某个特定表格中提取一些文本:

但是,当我执行代码时:

$objWord = New-Object -ComObject Word.Application
$objWord.Visible = $true
$filename = 'D:\test.docx'
$objDocument = $objWord.Documents.Open($filename)
$LETable = $objDocument.Tables.Item(1)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count

Write-output "Starting to write... "

$content2 = $LETable.Cell(6,2).Range.Text
$content3 = $LETable.Cell(7,1).Range.Text
$content4 = $LETable.Cell(7,2).Range.Text
#Write-host $content2
$doc2 = $objWord.Documents.Add()
$objWord.Selection.typetext("$content2")
$objWord.Selection.typetext("$content3")
$objWord.Selection.typetext("$content4")
#$objDocument.Close()
#$objWord.Quit()
# Stop Winword Process
#$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)


如何去除那些子弹和问号?我只需要纯文本。

您需要找到此字符的unicode表达式。找到后,使用正则表达式可以将其替换为空字符、空格或制表符。 我甚至尝试“直接”复制和粘贴”✀" 而且它也很有效

要删除字符,请执行以下操作: $String-替换'✀'

要替换它:

 $String = "Just ✀ and another ✀"
#replace ✀ with cat
 $String -replace '✀','cat'
结果是:

Just cat and another cat

实际上,您需要的是获取文档的纯文本。 退房


由于docx文件是开放式xml格式,您可以利用此工具及其强大的命令。

如果我想从Word Table.Cell和换行符(
r
n)上的每一行提取数据以添加“*”?我已经尝试使用
$LETable.Cell(7,1).Range.Text-replace'\r\a'、'-creplace'(?m^\s*\r\n'、''ForEach对象{ForEach($SearchArray中的$SearchText){$\.Range.Text | ForEach对象{“*”+$\| Select Object-Last 1}}}
Thanks@Stefan0309如果他的建议有效,你应该投票并标记答案,这样他就可以得到奖励。@Stefan0309对每个文本块使用正则表达式更容易:$text-replace'\r\n',”
r
n*”该代码将用以星号和空格(*)开头的新行替换每一行。替换部分中的“in”非常重要!抱歉,但请注意我忘记了预览注释中的转义字符。显示的正确示例是:
$text-replace'\r\n',“`r`n*”
带回号(`)在r和nun之前幸运的是,不,这不太好..我在最后一行有“*”。