3

私は openxml を使用して WordProcessingDocuments を作成しています (これは正常に動作し、作成されたワード doc はまさに私が望むものです)。今、これらの新しく作成されたドキュメントを openxml Powertools を使用して HTML に変換しようとしています。私はこれに慣れていないので、私が見逃しているのは愚かなことだと思っていますが、私が受け取っているこれらのnull許容エラーで誰かが私を正しい方向に向けてくれることを望んでいました.

これは正確なエラーです...

System.NullReferenceException: Object reference not set to an instance of an object.
at OpenXmlPowerTools.HtmlConverter.ConvertToHtmlTransform(WordprocessingDocument wordDoc, HtmlConverterSettings settings, XNode node, Func2 imageHandler)
at OpenXmlPowerTools.HtmlConverter.<>c__DisplayClass37.<ConvertToHtmlTransform>b__1d(XElement e)
at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XElement..ctor(XName name, Object content)
at OpenXmlPowerTools.HtmlConverter.ConvertToHtmlTransform(WordprocessingDocument wordDoc, HtmlConverterSettings settings, XNode node, Func2 imageHandler)
at OpenXmlPowerTools.HtmlConverter.<>c__DisplayClass37.<ConvertToHtmlTransform>b__1c(XElement e)
at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XElement..ctor(XName name, Object[] content)
at OpenXmlPowerTools.HtmlConverter.ConvertToHtmlTransform(WordprocessingDocument wordDoc, HtmlConverterSettings settings, XNode node, Func`2 imageHandler)

Eric Whitesブログで見つけたものとまったく同じコードを使用しています。

public static void PrintHTML(string file)
{
    byte[] byteArray = File.ReadAllBytes(file);
    using (MemoryStream memoryStream = new MemoryStream())
    {
        memoryStream.Write(byteArray, 0, byteArray.Length);
        using (WordprocessingDocument doc =
            WordprocessingDocument.Open(memoryStream, true))
        {

            HtmlConverterSettings settings = new HtmlConverterSettings()
            {
                //PageTitle = "some title"
            };
            XElement html = HtmlConverter.ConvertToHtml(doc, settings);

            File.WriteAllText(@"C:\\Temp\Test.html", html.ToStringNewLineOnAttributes());
        }
    }
}

私が作成していない通常のワードドキュメントを渡すと、正常に動作し、html に変換されるため、コードが機能することはわかっています。openxml を使用して単語ドキュメントを作成し、その内容を新しい単語ファイルに手動でコピーして保存し、それを変換コードに渡すと、同様に機能します。したがって、最初にopenxmlでdocという単語を作成する方法と関係があるに違いないと考えています。必要な部分をファイルに追加していない可能性があります。

openxml sdk を使用して、動作中のファイルと動作していないファイルを比較しましたが、同じコンポーネント/パーツを持っているようです。

私が投稿したエラーから、問題がどこにあるのか、つまりnullとは何かについてのアイデアはありますか? doc という単語の作成コードを投稿することはできますが、非常に広範であり、人々をさらに混乱させる可能性があります。

4

2 に答える 2