我正在尝试将Crystal Report导出到文本文件,同时保留在其中找到的任何Unicode字符。默认情况下,Crystal Reports似乎导出为ANSI文本文件。

以下是我正在做的高度简化的版本:

Dim objCRReport As CRAXDRT.Report
[...]
objCRReport.ExportOptions.FormatType = 8 'crEFTText
objCRReport.ExportOptions.DestinationType = 1 'crEDTDiskFile
objCRReport.ExportOptions.DiskFileName = "C:\reportInTextFormat.txt"
objCRReport.Export blnPromptUser 

由于它以ANSI格式创建文件,因此我丢失了在报告中找到的任何特殊字符。直接查看Crystal Report时,这些字符都很好。

请注意,我引用了“Crystal Reports 9 ActiveX Designer运行时库”。具体

有帮助吗?

解决方案

我想指出我已尝试在导出时预先创建一个名为 previous 的Unicode文件,希望Crystal代码能够注意到该文件,然后附加到它而不是创建一个ANSI文件,但不幸的是情况并非如此。

然后我想我可以通过导出到RTF文件(保留字符)来解决这个问题(忍者风格),然后读取此RTF的内容(减去格式化)。然后我会自己创建一个Unicode文本文件,将RTF内容写入其中。不幸的是,要实现这一点,我不得不考虑使用RichTextBox,但遇到了一些问题。我想我在VB.Net上取得了更多的成功,但不幸的是我因为这项任务而无法使用VB6。

尝试这些方法后,我发现一篇文章建议Crystal Reports 9 支持导出到Unicode文本文件,但我还没有看到它工作。它提到打印引擎支持它,所以我会更深入地看看我是否可以调用它,以防.export本身没有这样做(我怀疑)。

事实证明,Crystal 在很大程度上依赖打印机驱动程序来支持Unicode,所以我决定研究一下。原来打印机驱动程序 支持Unicode,而 就是我测试环境中的情况。虽然这很有趣,但它并没有解决我的问题 - 我已经有了兼容的打印机驱动程序。

所以,最后:在试图找到解决方案的几天之后,我的老板决定是时候减少损失了,而我们计划重新设计该功能,而不涉及Crystal Report to Text出口。但是,我仍然对如何使用Crystal导出到Unicode文本文件非常感兴趣 - 所以如果你知道怎么做,请回答。

scroll top