C# 在C语言中将单词范围转换为Html
我正在尝试将单词范围转换为Html。我知道如何转换Word文档,但如何仅转换Word文档的一个范围 转换完整Word文档的代码如下所示:C# 在C语言中将单词范围转换为Html,c#,ms-word,C#,Ms Word,我正在尝试将单词范围转换为Html。我知道如何转换Word文档,但如何仅转换Word文档的一个范围 转换完整Word文档的代码如下所示: private string GetHtmlFromRange(Range range) { XElement html; byte[] byteArray = File.ReadAllBytes(@"C:\test.docx"); using (MemoryStream memoryStream = new MemoryStream())
private string GetHtmlFromRange(Range range)
{
XElement html;
byte[] byteArray = File.ReadAllBytes(@"C:\test.docx");
using (MemoryStream memoryStream = new MemoryStream())
{
memoryStream.Write(byteArray, 0, byteArray.Length);
using (WordprocessingDocument doc = WordprocessingDocument.Open(memoryStream, true))
{
HtmlConverterSettings settings = new HtmlConverterSettings()
{
PageTitle = "My Page Title"
};
html = HtmlConverter.ConvertToHtml(doc, settings);
File.WriteAllText("Test.html", html.ToStringNewLineOnAttributes());
}
}
return html.ToStringNewLineOnAttributes();
}
我也有类似的问题。如果从使用HtmlConverter,则无法直接从MemoryStream执行转换。要转换范围,首先需要解析原始文档并创建一个仅包含所需范围的新文档,或者指定要包含在新文档中的段落对象,而不是范围。在任何一种情况下,转换都将在定义新文档之后进行。这是因为对象模型不使用范围;字符范围是呈现文档的属性 因此,您的选项是:A首先解析呈现的文档,以便使用方法处理所需的范围;B解析转换后的html,以便使用类似的方法选择与所需范围对应的元素 对于我的解决方案,我意识到每个用例都要求用户已经安装了MS Office,所以我只使用了Microsoft.Office.Interop.Word: 1定义要选择的范围,例如从位置5到位置100,包括非打印字符
var doc = Globals.ThisAddIn.Application.ActiveDocument;
object start = 5;
object end = 100;
var originalText = doc.ActiveWindow.Selection;
2将范围复制到新文档
var newDocument = new Word.Document();
newDocument.Range().FormattedText = doc.Range(start, end).FormattedText;
3保存新文档
object nullParameter = System.Reflection.Missing.Value;
object outputFileName = @"D:\converted.html";
object fileFormat = Word.WdSaveFormat.wdFormatFilteredHTML;
newDocument.SaveAs(ref outputFileName, ref fileFormat);
newDocument.Close(ref nullParameter, ref nullParameter, ref nullParameter);
4使用System.IO访问输出文件,并对内容执行任何操作,完成后将其删除
它一点也不优雅,但如果您使用的是互操作,优雅可能不是必需的