如何在没有样式的情况下从Excel复制到所见即所得编辑器?

如何在没有样式的情况下从Excel复制到所见即所得编辑器?,excel,ckeditor,wysiwyg,Excel,Ckeditor,Wysiwyg,我正在尝试将Excel表格(没有什么特别之处,只是文本)复制到WYSIWYG编辑器中,比如WordPress的CKEditor 但是当我这样做时,我看到表是用width和height属性复制的。因此HTML源代码如下所示: <table border="0" cellpadding="0" cellspacing="0" style="width:483px;" width="483"> <colgroup> <col />

我正在尝试将Excel表格(没有什么特别之处,只是文本)复制到WYSIWYG编辑器中,比如WordPress的CKEditor

但是当我这样做时,我看到表是用
width
height
属性复制的。因此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;">

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

我只需要像这样的简单数据

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


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

这是关于编辑器设置的。在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
子CopyRangeToHtmlTable()
将doClip设置为MSForms.DataObject
可作为变体的
我和我一样长,我和我一样长
Dim aTable()作为字符串
Dim aRow()作为字符串
'将范围读入数组
vaTable=表1.范围(“A1:B4”).值
'设置数组以容纳所有行
重拨数据表(1至UBound(增值税,1))
'在行中循环
对于i=LBound(可增值税,1)到UBound(可增值税,1)
'设置阵列以容纳所有tds
周围重播(1至UBound(可增值税,2))
'通过tds循环
对于j=LBound(可增值税,2)到UBound(可增值税,2)
aRow(j)=标签(可增值税(i,j),“td”)
下一个j
'将行添加到表数组中
aTable(i)=标记(Join(aRow,vbNullString),“tr”)
接下来我
'将表格放入剪贴板
Set doClip=New MSForms.DataObject
doClip.SetText标记(Join(aTable,vbNewLine),“table”,True)
doClip.PutInClipboard
端接头
公共函数标记(ByVal值作为字符串_
比瓦尔·斯塔格作为弦_
可选sAttr As字符串=”_
可选bIndent As Boolean=False)As String
变暗,变为字符串
如果Len(sAttr)>0,则
sAttr=空间(1)和sAttr
如果结束
如果是宾登的话
sValue=vbTab&Replace(sValue、vbNewLine、vbNewLine&vbTab)
sReturn=“&vbNewLine&sValue&vbNewLine&”
其他的
sReturn=“&s值&”
如果结束
Tag=sReturn
端函数
当我粘贴到记事本上时,它显示为

<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
Dick2
哈利3

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