You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell+PSWriteWord提取Word表格内容的技术求助

提取DOCX表格内容并迁移到新表格的PowerShell方案

你遇到的问题是因为Get-WordTable返回的是表格对象的元数据和底层XML结构,而非直接可读的文本内容。要提取实际单元格文本,需要遍历表格的Rows和Cells集合,读取每个单元格的段落文本。

步骤1:提取源表格的文本内容

以下脚本会读取目标DOCX中的表格,将每个单元格的文本提取到二维数组中:

Import-Module PSWriteWord

# 加载源文档并获取指定表格
$sourceDoc = Get-WordDocument "C:\Users\Administrator\Desktop\Journal_VU6-FIAE_KW11_14032022-20032022.docx"
$sourceTable = Get-WordTable -WordDocument $sourceDoc -TableID 0

# 初始化存储表格内容的二维数组
$tableData = @()

# 遍历每一行
foreach ($row in $sourceTable.Rows) {
    $rowData = @()
    # 遍历当前行的每个单元格
    foreach ($cell in $row.Cells) {
        # 将单元格内的所有段落文本合并(用换行符分隔多段落)
        $cellText = $cell.Paragraphs.Text -join "`n"
        $rowData += $cellText
    }
    # 将当前行数据加入二维数组(逗号避免数组扁平化)
    $tableData += ,$rowData
}

# 可选:打印提取的内容验证
$tableData | ForEach-Object { $_ -join "`t" }

步骤2:将内容填充到目标表格

拿到提取的$tableData后,即可创建新文档或打开已有文档,将数据写入新表格:

# 创建新的目标文档(或用Get-WordDocument打开已有文档)
$targetDoc = New-WordDocument

# 添加与源表格行列数一致的新表格
$targetTable = Add-WordTable -WordDocument $targetDoc -Rows $sourceTable.RowCount -Columns $sourceTable.ColumnCount

# 遍历数据并填充到新表格
for ($rowIndex = 0; $rowIndex -lt $tableData.Count; $rowIndex++) {
    for ($colIndex = 0; $colIndex -lt $tableData[$rowIndex].Count; $colIndex++) {
        Set-WordTableCellValue -WordDocument $targetDoc -Table $targetTable -RowIndex $rowIndex -ColumnIndex $colIndex -Value $tableData[$rowIndex][$colIndex]
    }
}

# 保存并关闭目标文档
Save-WordDocument -WordDocument $targetDoc -Path "C:\Your\Path\To\New_Journal.docx" -Close

注意事项

  • Paragraphs.Text仅提取纯文本,单元格内的格式(如加粗、颜色)会丢失,若需保留格式需额外处理段落的格式属性。
  • 若源表格存在合并单元格,Cells集合会包含合并后的单元格,提取时需注意行列对应关系。

内容的提问来源于stack exchange,提问作者mathis_dukatz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:27:30