1

背景:我们有一个从 HTML 生成报告的应用程序(可能有也可能没有内联脚本)。HTML 源代码通常以 blob 形式存储在数据库中。

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

写这篇文章时我突然想到了一些事情:我可以以编程方式打开文件(包含我想要硬编码的 HTML)并将文件的内容写入字符串。我现在就试一试...

任何人都可以提出更好/更优雅的方法吗?

4

3 回答 3

2

您可以阅读文件的每一行并随时追加。或者,您可以使用 StringBuilder 类。您需要编写此类或从类似这样的地方复制它。以这种方式做事也有可能提高性能。

将 oSB 调暗为 CStringBuilder
将 sHtml 调暗为字符串

设置 oSB = new CStringBuilder
带 oSB
  调用 .Append("这里有一些 HTML")
  调用 .Append("这里还有一些 HTML")
  ' ETC...
  sHtml = .ToString()
结束于

设置 oSB = 无
于 2008-11-11T04:25:45.677 回答
1

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

于 2008-11-11T04:01:50.937 回答
1

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

于 2008-11-11T07:51:59.333 回答