C#Excel.Range使用HTML数据设置单元格值

时间:2015-07-13 19:36:42

标签: c# excel-vba excel-2010 vba excel

我需要找到一种方法来使用html设置excel单元格值,并使用正确的格式显示它。我们从数据库加载数据,有时包含带有文本标记或html边框的html数据。所以我需要能够告诉excel它是html数据来呈现或转换html到excel标记或剥离html标记,但这并不理想。

var range = (Excel.Range)worksheet.Cells[rowIndex, columnIndex];
range.Value = "<b>This is <i>html text</i></b> that <font>could contain</font> any type of html;<br/>";

1 个答案:

答案 0 :(得分:1)

我没有声称将此作为评论发布,但在此处: 仔细看看HTML Text with tags to formatted text in an Excel cell VBA中有一个有效的解决方案,可以通过一点点努力将其翻译成c#:)

static void Main(string[] args)
    {
        object misValue = System.Reflection.Missing.Value;
        Type excelApplication = Type.GetTypeFromProgID("Excel.Application");
        dynamic excel = Activator.CreateInstance(excelApplication);
        dynamic xlWorkBook = excel.Workbooks.Add(misValue);
        dynamic SourceSheets = xlWorkBook.Worksheets[1];

        Type IeType = Type.GetTypeFromProgID("InternetExplorer.Application");
        dynamic Ie = Activator.CreateInstance(IeType);
        SourceSheets.Range("A1").Value = "<b>This is <i>html text</i></b> that <font>could contain</font> any type of html;<br/>";
        Ie.Visible = false;
        Ie.Navigate("about:blank");
        Ie.document.body.InnerHTML = SourceSheets.Range("A1").Value;
        Ie.document.body.createtextrange.execCommand("Copy");
        SourceSheets.Paste(SourceSheets.Range("A1"));
        Ie.Quit();
        xlWorkBook.SaveAs("test1", misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
    }

这真的是一个基本的翻译。你必须妥善保存/处理你的对象,但它适用于你想要做的事情。我只是注意到尝试使用互联网资源管理器的“允许访问”复制/粘贴垃圾箱,但我确信有一个工作方法。