【发布时间】:2013-07-30 11:40:50
【问题描述】:
我正在使用 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 这个词的创建代码,但它非常广泛,可能只会让人们更加困惑。
【问题讨论】:
标签: openxml