2011-03-17 46 views
2

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(); 
     } 

答えて

1

私は何が原因なのかよく分かりませんが、私は再度ステップを繰り返し、MSワードでエラーが発生しなくなったファイルを持っています。 Open XMLツールから私のコードにコピーして、どこかで犯した。これが似たような手順を踏んでいる人に起こった場合、私の提案はあなたのステップを繰り返すことです。コードをコピーしてどこかでスリップしている可能性があります。問題は、すでにたくさんのコードが書かれており、トレースバックするステップが多すぎる場合です。このような場合、バージョン管理システムが役立つはずです。ありがとうございました

0

をDOCXファイルをレンダリングしています。しかし、私は利用可能な情報のいくつかを除外することができます。

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 

名前の変更は心配しないでください。 Microsoft Wordは、倍数を持つことができる任意の部分に接尾辞番号を追加するのが好きです。したがって、単語が文書を回復したときに、文書を再作成し、その部分に好ましい名前付けシステムを使用しました。

+0

私は、それが誰かが何が起こっているか把握するのを助けた場合に備えて、それを追加しました。 –

+0

私はもっと助けになることができませんでした。私は私が知っていたことを分かち合うと思った。 –

関連する問題