2012-03-04 85 views
2

我試圖創建包含CSV文件的好看報告:TCL:由tcllib報表打印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+"[email protected]"} 

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** 

我做錯了什麼?

感謝

回答

0

當我與正是測試你提供了什麼(除非我有tcllib的系統複製,我是Tcl的8.5.2,CSV 0.7.3,結構測試的確切版本::矩陣2.0.2,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  | 
+------+--------+---------+--------+--------+ 

所有我能想到的是,你的真正數據必須是不正是你認爲它是。在一行數據的末尾是否有額外的逗號?

+0

你好,唐納,爲你的答案。幸運的是,數據文件是確定的,但我發現我需要修改代碼的最後一行:「printmatrix data」 - >「puts [printmatrix data]」。 – 2012-03-04 20:12:15

+0

是的,沒想到提及。大多數Tcl命令不直接打印輸出,因爲這會降低其靈活性。 :-) – 2012-03-04 20:29:19