带有标签的HTML文本,用于在Excel单元格中格式化文本

有没有一种方法来获取HTML并将其导入到Excel中,以便将其格式化为富文本(最好使用VBA)? 基本上,当我粘贴到一个Excel单元格,我期待着把这个:

<html><p>This is a test. Will this text be <b>bold</b> or <i>italic</i></p></html> 

进入这个:

这是一个testing。 这个文本是粗体还是斜体?

是的,这是可能的:)实际上让Internet Explorer为你做肮脏的工作;)

尝试和testing

我的假设

  1. 我假设HTML文本在Sheet1的单元格A1中。 您也可以使用一个variables。
  2. 如果你有一个充满html值的列,那么简单地把下面的代码放在一个循环中

 Sub Sample() Dim Ie As Object Set Ie = CreateObject("InternetExplorer.Application") With Ie .Visible = False .Navigate "about:blank" .document.body.InnerHTML = Sheets("Sheet1").Range("A1").Value .document.body.createtextrange.execCommand "Copy" ActiveSheet.Paste Destination:=Sheets("Sheet1").Range("A1") .Quit End With End Sub 

快照

在这里输入图像说明

HTH

希德

您可以将HTML代码复制到剪贴板并将其作为Unicode文本粘贴回去。 Excel将在单元格中呈现HTML。 看看这个posthttp://www.dailydoseofexcel.com/archives/2005/02/23/html-in-cells-ii/

来自post的相关macros代码:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim objData As DataObject Dim sHTML As String Dim sSelAdd As String Application.EnableEvents = False If Target.Cells.Count = 1 Then If LCase(Left(Target.Text, 6)) = "<html>" Then Set objData = New DataObject sHTML = Target.Text objData.SetText sHTML objData.PutInClipboard sSelAdd = Selection.Address Target.Select Me.PasteSpecial "Unicode Text" Me.Range(sSelAdd).Select End If End If Application.EnableEvents = True End Sub 

如果IE示例不起作用,使用这个。 无论如何,这应该比启动一个IE的实例更快。

这里是一个完整的解决scheme
http://www.dailydoseofexcel.com/archives/2005/02/23/html-in-cells-ii/

注意,如果你的innerHTML是全部的数字,比如'12345',那么HTML格式在excel中不能完全工作,因为它对待数字的方式不同。 但添加一个字符,例如尾部的尾部空格,例如。 12345 +“&nbsp;” 格式确定。

 Sub test() Cells(1, 1).Value = "<HTML>1<font color=blue>a</font>" & _ "23<font color=red>4</font></HTML>" Dim rng As Range Set rng = ActiveSheet.Cells(1, 1) Worksheet_Change rng, ActiveSheet End Sub Private Sub Worksheet_Change(ByVal Target As Range, ByVal sht As Worksheet) Dim objData As DataObject ' Set a reference to MS Forms 2.0 Dim sHTML As String Dim sSelAdd As String Application.EnableEvents = False If Target.Cells.Count = 1 Then Set objData = New DataObject sHTML = Target.Text objData.SetText sHTML objData.PutInClipboard Target.Select sht.PasteSpecial Format:="Unicode Text" End If Application.EnableEvents = True End Sub 

我知道这个线程是古老的,但在分配innerHTML之后,ExecWB为我工作:

 .ExecWB 17, 0 'Select all contents in browser .ExecWB 12, 2 'Copy them 

我遇到了BornToCode在原始解决scheme的评论中首次发现的错误。 不熟悉Excel和VBA,我花了一秒钟的时间来弄清楚如何实现tiQU的解决scheme。 所以我把它作为“For Dummies”解决scheme发布在下面

  1. 首先在Excel中启用开发人员模式: 链接
  2. select开发人员选项卡> Visual Basic
  3. 点击查看>代码
  4. 粘贴下面的代码更新需要单元格引用是正确的行。
  5. 单击绿色运行箭头或按F5

Sub Sample() Dim Ie As Object Set Ie = CreateObject("InternetExplorer.Application") With Ie .Visible = False .Navigate "about:blank" .document.body.InnerHTML = Sheets("Sheet1").Range("I2").Value 'update to the cell that contains HTML you want converted .ExecWB 17, 0 'Select all contents in browser .ExecWB 12, 2 'Copy them ActiveSheet.Paste Destination:=Sheets("Sheet1").Range("J2") 'update to cell you want converted HTML pasted in .Quit End With End Sub

你们都有有效的解决scheme,只有less数人可以实现这一点。

工具需要的是正则expression式,linq,search引擎,vb.net或C#和互联网。

search“html表格到数据集”。 然后search“数据集擅长没有安装Excel”。

我认为用这些术语你可能会把它放在一起。 ;)

但是这里有一些解决scheme。

  Using sr As StreamReader = New StreamReader(fileName, Encoding.UTF8) result = sr.ReadToEnd() End Using result = result.Substring(result.IndexOf("<tab")) Dim sb As New StringBuilder sb.AppendLine("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"" ""http://www.w3.org/TR/html4/loose.dtd"">") sb.AppendLine("<html>") sb.AppendLine("<head>") sb.AppendLine("<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1" > "") sb.AppendLine("<title>Title</title>") sb.AppendLine("</head>") sb.AppendLine("<body>") sb.Append(result) sb.AppendLine("</body>") sb.AppendLine("</html>") result = sb.ToString() File.Move(fileName, System.IO.Path.GetFileNameWithoutExtension(fileName) + ".txt") Dim ds As DataSet = GetTableAsDataSet.ConvertHTMLTablesToDataSet(result) If (DataSetToExcel.WriteXLSFile(fileName, ds) = True) Then 

http://www.dotnetfunda.com/articles/show/51/convert-html-tables-to-a-dataset

http://www.codeproject.com/Tips/313731/How-to-convert-DataSet-to-Excel-workbook-xls-using

为了简单起见,我的input文件是一个html表格,它映射到excel,给出正确的视图。 但一个看法就是这样。 所以我阅读它剥离元风格废话脱衣舞,并包裹在有效的HTML饲料中获取数据集并写出数据集。 请享用。

我认为正则expression式可以帮助您收集HTML的另一部分…

 <table[^>]*>(.*?)</table> == <html[^>]*>(.*?)</html> 

积分转到所述代码的作者。 我把它放在一起。