Word 2007で単語文書を作成して保存しました。次に、OpenXML生産性ツールを使用し、C#コードを取得するためにコードリフレクションを使用しました。OpenXMLエラー "ファイルが壊れていて、開くことができません。" C#のWord文書の場合
私がした次のステップは、tableRowオブジェクトを返す関数を作成することでした。 LINQで構築したリストを使用して、 という行のテキストフィールドに入力します。私は、サーバーがバックファイルで応答
foreach(ClassForLinqResult lr in LinqResult)
{
Table1.Append(CreateRow(lr.param1,lr.param2..etc));
}
問題が残るが、使用して、 テーブルの列に構築され、ループ内のフィールドに充填された1から列生成コードをコピーし、 Iそれをオープンしようとしている単語からエラーを取得する:
"The file is corrupt and cannot be opened".
私は追加の行のどこか 追加する必要があり、私は逃したコードの一部ありましたか? ファイルを回復させるために単語を使用すると、私の行が正しく表示されています。
破損したファイルは次のようにその中にファイルをパッケージフォルダを持っている:それはそれを削除し、 「docProps」フォルダにcore.xmlファイルを追加したファイルを修正した後
package\services\metadata\core-properties\edf684ae4e35438dacc06cb66c0afad2.psmdcp
。
誰もが、私はそれを感謝し、私のために問題を指摘するいくつかのツールを持っている場合、いくつかの他のファイルは、とにかく
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);
を試してみました。 私は文書という単語の問題を解明できませんでした。 誰かが問題の把握方法を知る手助けはできますか?または、おそらく私の問題を引き起こしているステップ を逃した?
追加情報:
このコードは、私が答えを持っていないどのように私は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();
}
私は、それが誰かが何が起こっているか把握するのを助けた場合に備えて、それを追加しました。 –
私はもっと助けになることができませんでした。私は私が知っていたことを分かち合うと思った。 –