TCL:通过tcllib报告打印csv文件报告

TCL:通过tcllib报告打印csv文件报告,csv,tcl,Csv,Tcl,我正在尝试创建漂亮的csv文件报告,其中包含: ,column_1, column_2,column_3,column_4 line_1,1,2,3,4 line_2,5,6,7,8 line_3,9,0,1,2 line_4,3,4,5,6 以下是我的TCL代码: #!/bin/sh # \ exec tclsh "$0" ${1+"$@"} lappend auto_path .../tcllib/ package require csv package require struct:

我正在尝试创建漂亮的csv文件报告,其中包含:

,column_1, column_2,column_3,column_4
line_1,1,2,3,4
line_2,5,6,7,8
line_3,9,0,1,2
line_4,3,4,5,6
以下是我的TCL代码:

#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}

lappend auto_path .../tcllib/

package require csv
package require struct::matrix
package require report


struct::matrix data
set f [open my.csv "r"]
csv::read2matrix $f data , auto

report::defstyle simpletable {} {
data set [split "[string repeat "| " [columns]]|"]
top set [split "[string repeat "+ - " [columns]]+"]
bottom set [top get]
top enable
bottom enable
}

report::report r 5 style simpletable
r printmatrix data
当我执行它时,我得到:

**report/matrix mismatch in number of columns**
我做错了什么

感谢您使用您提供的内容进行测试(除了我有一个tcllib的系统副本;我测试的确切版本是Tcl 8.5.2、csv 0.7.3、struct::matrix 2.0.2、report 0.3.1,全部来自ActiveTcl),然后它工作正常并产生了以下输出:

+------+--------+---------+--------+--------+ | |column_1| column_2|column_3|column_4| |line_1|1 |2 |3 |4 | |line_2|5 |6 |7 |8 | |line_3|9 |0 |1 |2 | |line_4|3 |4 |5 |6 | +------+--------+---------+--------+--------+ +------+--------+---------+--------+--------+ ||第1列|第2列|第3列|第4列| |第1 | 1 | 2 | 3 | 4行| |第2 | 5 | 6 | 7 | 8行| |第3 | 9 | 0 | 1 | 2行| |第4 | 3 | 4 | 5 | 6行| +------+--------+---------+--------+--------+ 我所能想到的是,你的真实数据一定不是你想象的那样。您的数据的一行末尾是否有一个额外的逗号?

当我测试您提供的数据时(除了我有一个tcllib的系统副本;我测试的确切版本是Tcl 8.5.2、csv 0.7.3、struct::matrix 2.0.2、report 0.3.1,全部来自ActiveTcl),然后它工作正常并产生了以下输出:

+------+--------+---------+--------+--------+ | |column_1| column_2|column_3|column_4| |line_1|1 |2 |3 |4 | |line_2|5 |6 |7 |8 | |line_3|9 |0 |1 |2 | |line_4|3 |4 |5 |6 | +------+--------+---------+--------+--------+ +------+--------+---------+--------+--------+ ||第1列|第2列|第3列|第4列| |第1 | 1 | 2 | 3 | 4行| |第2 | 5 | 6 | 7 | 8行| |第3 | 9 | 0 | 1 | 2行| |第4 | 3 | 4 | 5 | 6行| +------+--------+---------+--------+--------+
我所能想到的是,你的真实数据一定不是你想象的那样。您的数据的一行末尾是否有多余的逗号?

您好,多纳尔,请回答。幸运的是,数据文件还可以,但我发现我需要修改代码的最后一行:“r printmatrix data”-->“put[r printmatrix data]”。啊,是的,我没想到提到这一点。大多数Tcl命令不直接打印输出,因为这降低了它们的灵活性。:–)你好,多纳尔,谢谢你的回答。幸运的是,数据文件还可以,但我发现我需要修改代码的最后一行:“r printmatrix data”-->“put[r printmatrix data]”。啊,是的,我没想到提到这一点。大多数Tcl命令不直接打印输出,因为这降低了它们的灵活性。:–)