1

阿罗哈,

我有两个 .docx 文件我想在我的服务器上合并(只需将一个文档放在另一个之后)。在文档之间,我想从我的后端系统插入一些元信息(例如作者和日期;所有信息都在外部 .xml 文件中指定)

我已经发现,XSLT 处理器无法解析 .doc 或 .docx 文件,因为格式是二进制的。一种可能性是使用 Word .xml 扩展名。

我想知道是否可以将输入的 .docx 文件转换为 .xml 字格式,然后应用我的更改。在 .xml 单词文件上运行转换没有问题,但如上所述,将 docx 文件作为输入失败。

假设我能够运行我的转换,我如何将单词 .xml 文件转换回 docx 文件(客户端只想使用 .docx 文件而不是 .xml 文件)。

XSLT 适合这项任务还是有“更好的技术”?

我正在运行 XSLT 1.0。

干杯

4

1 回答 1

2

This will probably need a bit of work to modify for your needs, and there might be a bug or two in it, but it should get you started down the right path. Take a look here http://msdn.microsoft.com/en-us/library/office/ff839952.aspx and try the different XML options to decide which one works best for you.

param(
    [string]$Filename,
    [string]$StyleSheet,
    [string]$outputFile
)

$WordApp = New-Object -ComObject Word.application

if (![System.IO.Path]::IsPathRooted($FileName)){
    $Filename = Join-Path $pwd $FileName
}

$Document = $WordApp.Documents.Open($Filename, 2, $true) # Read only

$newFilename = [System.IO.Path]::ChangeExtension($filename, "xml")

if (Test-Path $newFilename){
    Remove-Item $newFilename
}

#http://msdn.microsoft.com/en-us/library/office/ff839952.aspx
$Document.SaveAs($newFilename, [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatXMLDocument)
$Document.Close()

$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($StyleSheet, $null, $null);
$xslt.Transform( $newFilename, $outputFile );


$WordApp.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($WordApp) | Out-Null
于 2013-10-10T12:20:05.447 回答