2013-08-29 38 views
5

OpenXML SDKを使用して作成されたExcelドキュメントでエラーの正確な場所を特定できるツールはありますか?OpenXML SDKで作成されたExcelドキュメントにエラーを見つけるツールはありますか?

Microsoft OpenXML SDK 2.5(同じ結果でv 2.0を試しました)を使用してExcelファイルを作成しましたが、コードのどこかで間違いを犯しているに違いありません。私が見つけようとしているのはどこです。

SDKの検証関数はすべて、ドキュメントが有効であると言います。生成されたExcelファイルをOpenXML SDK生産性ツールを使用して検証すると、応答は「パッケージに検証エラーがありません」と表示されます。

しかし、MS Excelを使用してExcelファイルを開くと、修復後にドキュメントが正しく表示されることをユーザーに警告します。 Excelの修復ログには、table.xmlファイルにエラーがありますが、ファイル上のエラーの場所は含まれていません。 Excelの修復ログは次のとおりです。

レコードを修復し:/xl/tables/table.xmlから表(リスト)

は、Excelスプレッドシートを検証するために使用することができるのOpenXML SDKの生産性ツール以外のツールはありますドキュメント内のエラーを特定しますか?

答えて

5

ポストは古いですが、私は同じ状況で固まっていましたので、ファイルダイアログを使用してファイルを受け入れるウィンドウズアプリケーションを作成しました。&エラーを表示するために解析します。最初の関数はダイアログボックス&を使用して生成されたファイル名を取得するだけで、2番目のメソッドは生成されたファイル内で観察されるすべてのエラーを表示します。 http://s18.postimg.org/60rqf78gp/Parse_Open_XML_Generated_File.jpg

private void button1_Click(object sender, EventArgs e) 
    { 
     lblError.Text = ""; 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      textBox1.Text = openFileDialog1.SafeFileName;     
     } 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      var validator = new OpenXmlValidator(); 
      int count = 0; 
      foreach (ValidationErrorInfo error in validator.Validate(SpreadsheetDocument.Open(openFileDialog1.FileName, true))) 
      { 
       lblError.Text += "\r\n"; 
       count++; 
       lblError.Text += ("Error Count : " + count) + "\r\n"; 
       lblError.Text += ("Description : " + error.Description) + "\r\n"; 
       lblError.Text += ("Path: " + error.Path.XPath) + "\r\n"; 
       lblError.Text += ("Part: " + error.Part.Uri) + "\r\n"; 
      } 
      Console.ReadKey(); 
     } 
     catch (Exception ex) 
     { 
      lblError.Text += (ex.Message); 
     } 
    } 
+4

おかげで、OpenXmlValidatorにエラーを返さないことをしようとしましたが、あなたはエクセル上でファイルを開いたとき、それはエラーを報告し、それらを修復しようとする画像に示すように

生成され出力されます。 OpenXmlValidatorがExcelほど多くのエラーをキャッチしないように見えます。 – Lenny

関連する問題