换行符从Excel中导出的html中断

时间:2012-12-06 09:48:38

标签: excel vba

我有一个关于Excel的问题以及如何将其工作表保存/导出为html。

如果我在工作表的未合并单元格中有一个长文本,并且当我将工作表导出为wep页面时,为什么单元格的文本会在html源代码中分成多行?

例如,单元格A1有文本选择X和Y,并运行XYZ代码为blah blah blah 。将工作表保存为网页时,源代码如下所示:

<tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1511698 colspan=5 style='height:15.0pt'>Select X and Y,
  and run XYZ code to blah blah blah</td>
 </tr>

在一行中选择X和Y,,然后选择并运行XYZ代码将等等等等等等。有办法防止这种情况吗?一些VBA代码,还是内置设置?

我需要这些信息,因为我有一个宏代码,它扫描导出的html文件的每一行以搜索一些文本。如果文本在html文件中显示为中断,则宏无法找到它。

2 个答案:

答案 0 :(得分:0)

HTML文本文件中的行似乎包含大约80个字符。我没有看到任何改变它的明显方法,并怀疑由于这样的换行在HTML中通常不重要,所以无法更改。如果我在Excel单元格中插入换行符(使用Alt+Enter),则会在HTML输出中将其复制为<br>

你问了这个:

  

为什么单元格的文本在html中分成多行   源代码?

..并且答案不是很有用,我担心:“因为它是这样做的。”

你对文件的外观做了一个不合理的假设:不幸的是,在这种情况下,这个假设被证明是不正确的。您是否可以使代码更智能,以便在文件中的物理行中查找<td></td>个代码中的文本?

答案 1 :(得分:0)

嗯,我也找到了解决方法。我使用以下VBA代码打开html文件进行编辑:

Open filePath For Input As #nextFileNum
  oldFileContents = Input$(LOF(nextFileNum), #nextFileNum)
  Close #nextFileNum

然后使用以下VBA代码行,我整理标签,以便所有文本(实际内容)出现在一行中:

oldFileContents = Replace(oldFileContents, vbCrLf, " ")
oldFileContents = Replace(oldFileContents, Chr(13), "")
oldFileContents = Replace(oldFileContents, Chr(10), "")
oldFileContents = Replace(oldFileContents, "&nbsp;", " ")
oldFileContents = Replace(oldFileContents, ">", ">" + vbCrLf)
oldFileContents = Replace(oldFileContents, "</", vbCrLf + "</")
oldFileContents = Replace(oldFileContents, "  ", "")

这将html源代码格式化为:

<tr height=20 style='height:15.0pt'>
<td height=20 class=xl1511698 colspan=5 style='height:15.0pt'>
Select X and Y,  and run XYZ code to blah blah blah
</td>
</tr>