使用VBA将单元格的值/格式转换为Excel中的HTML字符串

时间:2012-10-16 22:16:02

标签: excel vba excel-vba

我现在在多个应用程序中遇到过这个问题,我想知道是否有人提出了比我更有效的解决方案。从本质上讲,我的目标是将单元格内容转换为HTML字符串以包含其所有格式。到目前为止,我的解决方法是遍历字符串中的每个字符以确定字体大小,重量和样式,但是,当一次转换大量数据时,这可能会非常慢。

1 个答案:

答案 0 :(得分:1)

依次浏览每个角色会非常缓慢,但只有在极端情况下才有必要。我使用以下方法非常成功地解决了同样的问题。

对于每个相关属性(粗体,斜体等),我构建了一个数组,用于存储每个更改在该属性值中的位置。然后在生成HTML时,我可以将所有文本吐出,直到下一次更改(在任何属性中)。如果变化很少发生,这显然会更快。

现在,为了到达每个属性的更改位置,我首先测试是否实际上有任何更改,这很容易 - 例如,如果Font.Bold将返回true所有文本都是粗体,如果它都是非粗体,则为false;如果有粗体和非粗体部分,则为null(或其他值 - 我无法记住)。

所以,如果价值没有变化,我们已经完成了。如果值发生变化,那么我将文本的二进制细分为两半,然后重新开始。同样,我可能会发现一半是完全相同的,而另一半包含一个变化,所以我像以前那样在后半部分进行另一个细分,依此类推。

由于很少有细胞倾向于有很多变化,而且许多细胞根本没有变化,因此最终效率很高。或者至少比逐字符方法更有效率。