后台:我们有一个应用程序可以从HTML生成报告(可能有也可能没有内联脚本)。 HTML源通常作为blob存储在数据库中。

现在需要将特定报告硬编码到应用程序中(即,使其不依赖于数据库)。我首先尝试了蛮力方式(将整个报告剪切并粘贴到一个常量字符串中并附加了大量的& vbNewLine& _ ;它不起作用,因为看起来似乎是一个可以使用的& _ 数量的限制。我想把所有东西压缩成(或多或少)一行,但不仅会损害可读性,也不会为内联脚本工作。

我写这篇文章时发生了一件事:我可以通过编程方式打开文件(包含我想要硬编码的HTML)并将文件的内容写入字符串。我现在就开始吧...

有人能建议更好/更优雅的方式吗?

有帮助吗?

解决方案 3

我最终将HTML文件嵌入到资源(res)文件中,并使用LoadResData从那里加载它。我问了另一个关于从res文件加载HTML文件的问题(并得到了一个非常好的答案)。请注意,另一个选项可能是将HTML(或任何其他文本文件)嵌入为自定义资源;通过这种方式,当使用LoadResData而不是数字时,您将能够按名称(即自定义资源的名称)引用资源(对于那些出现并尝试理解您的代码的人来说,这可能并不太重要)。另请注意,如果要将HTML加载到字符串中(就像我一样),则需要在LoadResData返回的结果上调用StrConv(LoadResData返回一个字节数组)。

其他提示

您可以阅读文件的每一行并随意附加。或者,您可以使用StringBuilder类。您需要编写此类或从某个地方复制它 like这。以这种方式做事也有可能提高绩效。

Dim oSB as CStringBuilder
Dim sHtml as String

Set oSB = new CStringBuilder
With oSB
  Call .Append("Some HTML here")
  Call .Append("Some more HTML here")
  ' etc...
  sHtml = .ToString()
End With

Set oSB = Nothing

如果这是你必须去的方式,那么考虑使用html字符串作为模板,在字符串中使用@@ var1 @@等占位符,然后可以用实际动态值替换而不是尝试生成最终输出内联,应该更容易调试问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top