TCL:通过tcllib报告打印csv文件报告
我正在尝试创建漂亮的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:
,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命令不直接打印输出,因为这降低了它们的灵活性。:–)