我已经用Word 2007构建了一个Word文档并保存了它。然后我使用OpenXML生产力工具并使用代码反射来获取C#代码。OpenXML错误“文件已损坏,无法打开。”对于C#中的Word文档#
我做的下一步是构建一个返回tableRow对象的函数。 我将使用我用LINQ构建的列表填充行的 的文本字段。我从建在 表中的行,并填写在一个循环中的字段1复制的排辈代码,使用
foreach(ClassForLinqResult lr in LinqResult)
{
Table1.Append(CreateRow(lr.param1,lr.param2..etc));
}
问题仍然存在,当服务器回来的文件进行响应, 我从Word试图打开它得到一个错误:
"The file is corrupt and cannot be opened".
是否有我错过了代码的某些部分需要别的某处被添加 为我添加了行?事实证明,当我用字试图恢复文件时,我的行显示正确。
损坏的文件有一个包文件夹,像这样在这一个文件:
package\services\metadata\core-properties\edf684ae4e35438dacc06cb66c0afad2.psmdcp
它纠正它删除了该文件,并增加了一个core.xml文件到 “docProps”文件夹后。
其他一些文件被更改
customXML\item.xml changes to customXML\item1.xml after recovery
customXML\itemProps.xml changes to customXML\itemProps1.xml after recovery
customXML\item.xml.rels changes to customXML\item1.xml.rels after recovery
word\footer.xml changes to word\footer1.xml after recovery
word\theme\theme.xml changes to word\theme\theme1.xml
无论如何,如果任何人有一些工具,指出这个问题对我来说我会很感激的。 我试图
OpenXmlPackageValidationSettings validationSettings = new OpenXmlPackageValidationSettings();
validationSettings.EventHandler += new EventHandler<OpenXmlPackageValidationEventArgs>(PackageValidationEventHandler);
CreateParts(package,LicenseToPrint);
package.Validate(validationSettings);
这嗟表示不存在与验证问题的任何代码。 我一直无法找出文档这个词的问题。 任何人都可以帮助一个想法如何找出问题?或者,也许我错过了导致我的问题的步骤 ?
附加信息:
这段代码是怎么了渲染的docx文件在asp.net
GeneratedClass c = new GeneratedClass();
using (MemoryStream generatedStream = new MemoryStream())
{
c.CreatePackage(generatedStream,LicenseToPrint);
ValidateDocument(generatedStream);
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; FileName=\"License.docx\"");
Response.ContentType = "application/msword";
//Response.ContentType = "application/vnd.ms-word.document";
generatedStream.WriteTo(Context.Response.OutputStream);
Context.Response.Flush();
}
我刚刚补充说,如果它帮助有人弄清楚发生了什么事情:) – 2011-03-17 23:51:20
对不起,我没有更多的帮助。我想我会分享我所知道的。 – 2011-03-18 00:04:28