【发布时间】:2009-11-20 07:02:39
【问题描述】:
我目前正在一个网站上工作,该网站显示生成的 word 文档存在一个奇怪的错误。该网站有一项功能,允许用户下载包含与其访问相关的信息的 Word 文档。该文件是通过一些 vb.net 代码生成的,并采用最终文档的 xml 模板并插入所需的相关内容。
奇怪的行为是,在某些机器上生成的 .doc 文件显示正常,而在其他机器上,在 Word 中打开时它显示为 XML。这两种行为都出现在同一版本的 Office (2003) 但在不同的计算机上。我的问题实际上是错误是否在于个别机器上的单词设置,或者代码中是否存在错误。
创建文件并下载的代码如下:
Response.Clear()
Response.ClearHeaders()
Response.AddHeader("content-disposition", "inline; filename=MyNewFile")
Response.ContentType = "application/msword"
'Create the word file as a byte array based off an xml template document'
Dim objWordGenerator As New WordFileGenerator
Response.BinaryWrite(objWordGenerator.GetWordBytes)
Response.Flush()
Response.Clear()
Response.End()
实际的 xml 模板非常大,因此可能不适合在此处发布,但如果需要,我可以提供更多信息。
更新:
设法修复了原始错误(事实证明,正在使用的原始文件名没有 .doc 扩展名)我发现了另一种奇怪的行为。
打开文件时,它会在 Word 中正确打开,但是当您保存它时,默认文件类型是 XML。当另存为 XML 文件时,它将在 Word 中正确打开,但我觉得这对最终用户来说有点令人困惑。我希望该文件默认保存为 DOC 文件。有没有办法强制这种情况发生?
更新 2:
下面是与 Document 属性相关的 XML 部分。文档的其余部分涉及内容和样式等,所以我的假设是这是最相关的部分。重申一下,我的问题是当下载的 .doc 文件用 word 打开时,默认的“另存为”选项是 XML 文件。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
<o:DocumentProperties>
<o:Title>Fancy Word Doc</o:Title>
<o:Author>Bob Bobertson</o:Author>
<o:Characters>999</o:Characters>
<o:Company>A Fancy Company</o:Company>
<o:Version>1.1.1</o:Version>
</o:DocumentProperties>
干杯
【问题讨论】:
-
您使用的是哪种文件格式? Microsoft Office XML 还是 Office Open XML?
-
微软Office的xml格式
-
您能否提供 XML 模板,将其放在网上某处?