在ASP.NET中读取word文档并替换文本(Office 2003/2007)

时间:2009-12-15 19:16:19

标签: asp.net replace ms-word ms-office integration

我正在使用VS 2005,asp.net 2.0。

我需要在asp.net中读取word文档(.doc),进行一些替换,然后生成另一个word文档。

到目前为止确定。我已经在安装了Office 2003的计算机上完成了,因此在VS 2005中我添加了对“ Microsoft Word 11.0对象库”的引用。一切都很完美。用于打开/保存word文档的代码:http://www.dnzone.com/go?1387

问题1:我需要在安装了Office 2007的计算机上打开同一个项目并使其运行。当我这样做时,它不识别引用..我只能添加对“ Microsoft Word 12.0对象库”的引用。如何在两台机器上以尽可能少的努力使其顺利运行?有办法吗?

问题2:将此应用程序部署到Web服务器时,此应用程序是否正常工作?我是否必须在服务器中注册一些dll或组件,或者做其他事情才能使这个办公室集成工作?

5 个答案:

答案 0 :(得分:1)

您绝不应该使用服务器代码中的Word API。它不受支持,通常无法可靠地工作。

答案 1 :(得分:1)

节省大量工作并使用Word XML(在Word 2002及更高版本中提供)来创建模板。检查生成的XML代码,以查看必须在何处进行替换。与Office 2002,2003,2007兼容,无需服务器组件。

在99%的情况下,Word XML看起来与相应的DOC文件相同,但更易于维护。此外,还支持所有Word功能,这就是为什么您可能更喜欢它而不是RTF。

答案 2 :(得分:0)

我在一段时间后遇到了这个问题 - 我们最终将它保存为RTF文件仍然是格式化然后使用基于键值的FileStream和.Replace(someStringValue),例如#DateForEventStart,所以你有类似的东西此

    public void something()
    {
        StreamReader stream = new FileStream(filePath);
        string template = stream.ReadToEnd();
        template.Replace(templateKeyValue, objectValue);
    }

然后您可以将其传输到memstream或您需要的任何内容。我不知道你们所做的事情是否可行,但这是一个想法。

答案 3 :(得分:0)

您可能想看看Aspose产品。它们被设计为在服务器环境中工作(但不是免费的)

答案 4 :(得分:0)

我们发现了问题,它与文件创建有关。我在已存在的文件上使用FileStreamFileMode.Open。我更改为FileMode.Create以创建一个全新的文件并且..voillá! :)

非常感谢大家的回复,特别感谢Jan Jongboom