0

我正在尝试将 Excel 表格(没什么花哨的,只是文本)复制到所见即所得的编辑器,例如 CKEditor for WordPress。

但是当我这样做时,我看到表被复制了widthheight属性。因此 HTML 源代码如下所示:

<table border="0" cellpadding="0" cellspacing="0" style="width:483px;" width="483">
    <colgroup>
        <col />
        <col span="4" />
    </colgroup>
    <tbody>
        <tr height="19">
            <td height="19" style="height:19px;width:227px;">

tag的属性<table>可以从文本编辑器本身进行编辑,但是 tr 和 td 属性呢?如何从它们中删除样式?

我只想要简单的数据

<table>
<tr>
<td></td>
</tr>
</table>

这与所见即所得编辑器的设置本身有关吗?

4

2 回答 2

0

这是关于编辑器设置的。当您在 Excel 中复制时,它会将数据以几种不同的格式放入 Windows 剪贴板。其中一种格式是纯文本,另一种是 HTML,其中两种可能有一些专有的二进制格式。

当您在另一个应用程序中过去时,它具有所需格式的优先级。您的编辑器可能会首先查找 HTML。如果有 HTML 格式,它会抓取它。如果 Windows 剪贴板无法将复制的数据表示为 HTML,您的编辑器可能会转到其列表中的 #2 格式 - 可能是纯文本。

如果要控制 Excel 表格如何转换为 HTML,则必须自己进行。此代码将 Excel 范围转换为 html 表。

Sub CopyRangeToHtmlTable()

    Dim doClip As MSForms.DataObject
    Dim vaTable As Variant
    Dim i As Long, j As Long
    Dim aTable() As String
    Dim aRow() As String

    'Read range into array
    vaTable = Sheet1.Range("A1:B4").Value

    'set up array to hold all of the rows
    ReDim aTable(1 To UBound(vaTable, 1))

    'loop through the rows
    For i = LBound(vaTable, 1) To UBound(vaTable, 1)
        'set up array to hold all of the tds
        ReDim aRow(1 To UBound(vaTable, 2))
        'loop through the tds
        For j = LBound(vaTable, 2) To UBound(vaTable, 2)
            aRow(j) = Tag(vaTable(i, j), "td")
        Next j
        'add the row to the table array
        aTable(i) = Tag(Join(aRow, vbNullString), "tr")
    Next i

    'put the table into the clipboard
    Set doClip = New MSForms.DataObject
    doClip.SetText Tag(Join(aTable, vbNewLine), "table", , True)
    doClip.PutInClipboard

End Sub

Public Function Tag(ByVal sValue As String, _
    ByVal sTag As String, _
    Optional sAttr As String = "", _
    Optional bIndent As Boolean = False) As String

    Dim sReturn As String

    If Len(sAttr) > 0 Then
        sAttr = Space(1) & sAttr
    End If

    If bIndent Then
        sValue = vbTab & Replace(sValue, vbNewLine, vbNewLine & vbTab)
        sReturn = "<" & sTag & sAttr & ">" & vbNewLine & sValue & vbNewLine & "</" & sTag & ">"
    Else
        sReturn = "<" & sTag & sAttr & ">" & sValue & "</" & sTag & ">"
    End If

    Tag = sReturn

End Function

当我粘贴到记事本中时,它就像

<table>
    <tr><td>Name</td><td>Number</td></tr>
    <tr><td>Tom</td><td>1</td></tr>
    <tr><td>Dick</td><td>2</td></tr>
    <tr><td>Harry</td><td>3</td></tr>
</table>
于 2013-07-16T13:39:15.887 回答
0

如果您使用 Dreamweaver,您可以将 Excel 文件保存为 CSV 文件,然后将其导入。转到文件 > 导入 > 表格数据。这适用于太大而无法复制并粘贴到 Dreamweaver 的设计视图中的文件,这是我的常规方法。如果您不使用 Dreamweaver,则可以将其粘贴到Mr. Data Converter之类的内容中,然后将其输出为无样式的 HTML。

于 2015-03-12T23:13:26.290 回答