Powershell 将表对象导出到CSV
我们从word文档中提取了所需的表,但是有人可以帮助我们。。。这就是我如何将这个表对象Powershell 将表对象导出到CSV,powershell,csv,ms-word,Powershell,Csv,Ms Word,我们从word文档中提取了所需的表,但是有人可以帮助我们。。。这就是我如何将这个表对象$LETable导出为CSV,或者将我们在下面以CSV格式获取的值导出为表格式 $objWord = New-Object -Com Word.Application $filename = 'D:\Files\Scan1.doc' $objDocument = $objWord.Documents.Open($filename) $LETable = $objDocument.Tables.Item(4)
$LETable
导出为CSV,或者将我们在下面以CSV格式获取的值导出为表格式
$objWord = New-Object -Com Word.Application
$filename = 'D:\Files\Scan1.doc'
$objDocument = $objWord.Documents.Open($filename)
$LETable = $objDocument.Tables.Item(4)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count
$obj = New-Object -TypeName PSCustomObject
Write-Output "Starting to write... "
for($r=1; $r -le $LETableRows; $r++) {
for($c=1; $c -le $LETableCols; $c++) {
#Write-Host $r "x" $c
$content = $LETable.Cell($r,$c).Range.Text
Write-Host $content
}
}
$objDocument.Close()
$objWord.Quit()
# Stop Winword Process
$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)
还没有准备好解决方案,但我没有更多的时间 脚本输出所有用双引号括起来的字段,每行用逗号分隔,并存储在变量$RAWSCSV中,然后将该变量传递给
convertfromCSV
我在单元格值中遇到了cr/lf和CHAR7的问题,我将其替换为零
## Q:\Test\2018\07\17\SO_51385204.ps1
$CsvName = '.\Test.csv'
$filename = (Get-Item ".\Test-text.docx").FullName
$tableNum = 4
$delimiter = ','
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true # $false
$objDocument = $objWord.Documents.Open($filename)
$LETable = $objDocument.Tables.Item($tableNum)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count
Write-Output "Starting to write... "
# "Table rows:{0} cols:{1}" -f $LETableRows,$LETableCols
$RawCSV = for($r=1; $r -le $LETableRows; $r++) {
$content= @()
for($c=1; $c -le $LETableCols; $c++) {
#Write-Host ("R:{0},C:{1}" -f $r,$c)
$content += ("`"{0}`"" -f $LETable.Cell($r,$c).Range.Text -replace "(`r|`n|`t)|$([char]7)?")
}
$Content -join $delimiter
}
$Csv = $RawCSV | ConvertFrom-Csv
$objDocument.Close()
$objWord.Quit()
# Stop Winword Process
$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)
$Csv
$Csv | Export-Csv $CsvName -NoTypeInformation
模式如下:1)创建一个ArrayList来保存对象。2) 遍历表中的每一行并创建一个对象,该对象具有表中每个列的属性。3) 通过迭代该行中的所有单元格来填充属性。4) 将该对象添加到ArrayList。5) 继续,直到所有行都被迭代。6) 将ArrayList导出为CSV。@AnsgarWiechers我已删除VBA标记;这是一个PowerShell问题,世界上所有的VBA专家在这里都无法提供帮助,以免他们碰巧也知道PowerShell。@MathieuGuindon我专门添加了标签b/c这是一个(单词-)VBA问题,因为它是一个PowerShell问题。@AnsgarWiechers标签包含了这些信息。VBA是一种语言,而不是类型库。这里的语言是PowerShell…表的第一行是否包含要保留在csv中的标题(并且可以这样使用)?