我正在使用 openxml 创建 WordProcessingDocuments(效果很好,并且生成的 word 文档正是我想要的),现在我正在尝试使用 openxml Powertools 将这些新创建的文档转换为 HTML。我是新手,所以我希望那是我错过的一些愚蠢的事情,但希望有人能用我收到的这些可空错误指出我正确的方向。
这是确切的错误...
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());
}
}
}
我知道代码可以工作,因为如果我将它传递给我没有创建的普通 worddoc,它可以正常工作并转换为 html。如果我使用 openxml 创建一个 word doc,然后手动将内容复制到一个新的 word 文件中,保存它,然后通过转换代码传递它,那也可以。所以我认为这一定与我最初在 openxml 中创建单词 doc 的方式有关。也许我没有在所需的文件中添加一部分。
使用 openxml sdk 我比较了一个工作和非工作文件,它们似乎具有相同的组件/部件。
从我发布的错误中,有没有人知道问题可能出在哪里,即什么是空?我可以发布 doc 这个词的创建代码,但它非常广泛,它可能只会让人们更加困惑。