如何阅读特殊字符,如“quotó&引用;在Excel中使用TCL?

如何阅读特殊字符,如“quotó&引用;在Excel中使用TCL?,excel,tcl,ascii,Excel,Tcl,Ascii,我的.xls文件中有一些特殊字符。我试图读取.xls中的所有行并将它们写入.txt文件,但字符已更改。例如:Excel中有os。 TCL脚本: set Channel_Read [open Sample.xls r] set Channel_Write [open Text.txt a+] while {[gets $Channel_Read Line]>=0} { puts $Channel_Write $Line } close $Channel_Write close $Channe

我的.xls文件中有一些特殊字符。我试图读取.xls中的所有行并将它们写入.txt文件,但字符已更改。例如:Excel中有
o
s。 TCL脚本:

set Channel_Read [open Sample.xls r]
set Channel_Write [open Text.txt a+]
while {[gets $Channel_Read Line]>=0} {
puts $Channel_Write $Line
}
close $Channel_Write
close $Channel_Read
打开Text.txt后,
ó
变为
\&243

你知道如何避免这种情况吗

立即点:

  • .xls格式为二进制格式,因此应使用:

    set Channel_Read [open "Sample.xls" rb]
    
    (或
    fconfigure$Channel\u Read-translation binary
    打开后立即配置;它是等效的。)

    类似地,如果要将其转储到另一个文件中,出于同样的原因,使用
    a+b
    作为打开模式将停止输出损坏

  • 对于从一个通道到另一个通道的直接复制,请使用
    fcopy
    而不是循环。
    fcopy
    命令使用一些低级技巧来提高工作效率

    fcopy $Channel_Read $Channel_Write
    
  • 然而,我真的怀疑,除了你提供的信息中直接透露的情况外,正在发生什么事情。Tcl不会以您描述的方式损坏字节(我知道编码引擎在做什么,对于任何编码它都不会以这种方式工作)。更重要的是,与电子表格相关的“线”概念显然是不正确的;电子表格没有行,它们有行(和列,还有表格),它们根本不需要以相同的方式排列。我也不明白为什么将二进制电子表格附加到另一个文件是一件好事


    我认为你需要停下来,想想你正在尝试做的更广泛的任务,然后尝试解决这个问题,而不仅仅是这个小问题。虽然我可以更深入地回答您当前的问题,但我怀疑如果我这样做,我不会给您真正有帮助的帮助。

    无需重新发明轮子。使用这个软件包,它正是为你想要做的事情而设计的。以下是一些示例:

    您无法使用
    get
    逐行读取.xls文件。这是一种专有的二进制格式-您需要一个特殊的解析器。您可能对它感兴趣。我自己也没试过,但看起来很有希望
    是Excel内部表示
    的方式…