如何从Excel复制到WYSIWYG编辑器没有样式?

时间:2013-07-16 12:17:35

标签: excel ckeditor wysiwyg

我正在尝试将Excel表格(没有任何花哨,只是文本)复制到WYSIWYG编辑器,如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;">

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

我只想要像

这样的普通数据
<table>
<tr>
<td></td>
</tr>
</table>

这是关于WYSIWYG编辑器的设置吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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