0

我有一个关于 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 代码以将 blah blah blah插入另一行。有没有办法防止这种情况?一些 VBA 代码或内置设置?

我需要这些信息,因为我有一个宏代码可以扫描导出的 html 文件的每一行以搜索一些文本。如果文本在 html 文件中出现损坏,则宏找不到它。

4

2 回答 2

0

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

你问这个:

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

..而且答案不是很有用,恐怕:“因为它是那样做的”。

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

于 2012-12-06T10:39:52.050 回答
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>
于 2012-12-06T17:34:54.063 回答