XlsReadWriteII 组件在尝试在 xls 中写入 UTF8 字符时删除字符串 sheet

XlsReadWriteII Component deletes strings when trying to write UTF8 characters in xls sheet

我正在使用 Delphi 7 构建一个项目,其中我使用了 Axolot 的 XLSReadWriteII5 组件。现在我正在尝试创建一个 xls sheet,我试图在其中复制特定 sql table 的数据。 具体来说,我有一个 table 名称 "CredentialsT",其中我有以下记录:

A/A ServerURL     UserName      Password    Numbers

1   11111         DFGDFSG       4emÜø}ý     275,12073,1780
2   adsf          asdf          7g2ÌkßJ     275,12073,1780
3   sdfasdf       afsadfasdf    4e8@Â:Ïœ     275,12073,1780
4   asdfdsafasd   gggggggg      0‰n>ª3­ý      19504,32539,275

"Password" 列中的数据已加密,这就是为什么它的内容看起来 - 不知何故 - 没有逻辑。 "Numbers column"也是字符串类型。

现在,在我创建 XLSReadWrite object 之后,我读取了上述记录,然后将它们写入我使用 XLSReadWrite object 创建的 xls 文件中。然而,即使在读取或写入过程中没有出现错误或警告,当我尝试打开 xls 文件时 - 使用 excel - 它会产生 4 个关于文件机密性的警告 - 你只需在其中单击'ok/yes' 按钮并出现以下致命错误消息:

"已停产部门:部门 /xl/sharedStrings.xml XML-error。(字符串)非法 xml 字符。第 83 行,第 5 列。 停产条目:/xl/worksheets/sheet1.xml"

部分的单元格信息

通过单击 "ok/yes" 按钮,xls 文件将打开,但仅保留数字数据(A/A 列)。其他所有内容都丢失了,甚至 headers 列(A/A、ServerURL 等)。另一方面,如果我从我的服务器复制并在我的 xls 文件中写入除 "Password" 一个 之外的所有列 ,那么一切都非常有效。所以,我想整个问题都与编码有关。那是因为Delphi-7不使用UTF8编码而是ANSI编码。

我试图查找 XLSReadWriteII5 组件是否有任何 "encoding" 属性 但我失败了。

谁能给我提供解决此问题的方法?

将加密数据编码为有效的字符串格式。

加密数据为8位字节,并非所有8位字节都是UTF-8字符。通常如果加密数据需要是UTF-8字符,它被编码为Base64或十六进制字符串。