7

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

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

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

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

修復されたレコード: /xl/tables/table.xml からのテーブル (一覧)

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

4

1 に答える 1

5

投稿は古いですが、同じ状況で立ち往生していたので、ファイルダイアログを使用してファイルを受け入れ、それを解析してエラーを表示するWindowsアプリケーションを作成しました。最初の関数は、ダイアログ ボックスを使用して生成されたファイル名を取得するだけで、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);
        }
    }
于 2013-12-10T12:51:10.697 に答える