将HTML插入Excel单元格

时间:2015-06-04 14:36:12

标签: c# html asp.net excel export-to-excel

我有一个用ASP.NET和C#构建的审核系统,用户可以在其中插入注释,这些注释可以使用表(<table>)进行HTML格式化,“输入”(<br>),列出{{1带有下划线的文字(<ul><li>),拉丁文字母(í,ó,á,é,ú)等等。

我需要将这些注释导出到Excel单元格中,并且只需要在一个单元格中正确呈现其HTML元素。

应该如下所示: enter image description here

我尝试使用互操作,但我只是将其视为纯文本

(<u>)

像这样: enter image description here

我也尝试将其复制到剪贴板,但我弄得一团糟:

 worksheet.Cells[1, 1] = htmlText;

我看到它就像这样

enter image description here

我也试过iceblue,但它只支持“span”元素和段落,而不支持表格,列表等复杂元素。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,我在html-text-with-tags-to-formatted-text-in-an-excel-cell

找到了类似的内容

区别在于他们在Excel中工作,你有一个ASP.NET站点;所以我们必须要有点创意。

步骤1:引用以下COM对象“Microsoft Internet Controls”(SHDocView)

步骤2:将以下using语句添加到您的代码中

using SHDocVw;

第3步:尝试以下代码:

var ie = new InternetExplorer();
ie.Visible = false;
ie.Navigate("about:blank");
ie.Document.body.innerHTML = htmlTable;  //Yes, this is the correct casing
ie.Document.body.createtextrange.execCommand("Copy");

var xlExcel = new Application();
xlExcel.Visible = true;

var misValue = System.Reflection.Missing.Value;
var xlWorkBook = xlExcel.WorkBooks.Add(misValue);

var xlWorkSheet = (WorkSheet)xlWorkBook.Worksheets.get_Item(1);

var range = (Range)xlWorkSheet.Cells[1, 1];
range.Select();

xlWorkSheet.Paste();