如何在 tcl 中读取 xlsx 工作表文件?
How to read a xlsx worksheet file in tcl?
目前,我正在通过将文件转换为 CSV 格式来读取文件。有什么方法可以通过 tcl 读取 excel 工作表吗?
下面使用 CAWT 包打开 csv 文件并获取其值的示例:
package require cawt
# Open a new instance
set appId [Excel::OpenNew false] ; # set true to open an visible Excel
set workbookId [Excel::AddWorkbook $appId]
set csvfile {c:\temp\test.csv}
# 1;2;3
# 4;5;6
try {
set worksheetId [Excel::GetWorksheetIdByIndex $workbookId 1] ; # open first sheet
set rangeId [Excel::SelectRangeByString $worksheetId "A1"] ; # select range 'A1'
# Import csv file to range A1
Excel::Import $rangeId $csvfile \
-consecutive false \
-delimiter ";" \
-decimalseparator "."
# Get last column & row used...
set numCols [Excel::GetNumUsedColumns $worksheetId]
set numRows [Excel::GetNumUsedRows $worksheetId]
# Get values
puts [Excel::GetMatrixValues $worksheetId 1 1 $numRows $numCols]
} finally {
# no need to close Excel if visible...
if {![Excel::Visible $appId]} {
Excel::Close $workbookId
Excel::Quit $appId false
} else {
Cawt::Destroy ; # delete com object
}
}
结果:
{1.0 2.0 3.0} {4.0 5.0 6.0}
目前,我正在通过将文件转换为 CSV 格式来读取文件。有什么方法可以通过 tcl 读取 excel 工作表吗?
下面使用 CAWT 包打开 csv 文件并获取其值的示例:
package require cawt
# Open a new instance
set appId [Excel::OpenNew false] ; # set true to open an visible Excel
set workbookId [Excel::AddWorkbook $appId]
set csvfile {c:\temp\test.csv}
# 1;2;3
# 4;5;6
try {
set worksheetId [Excel::GetWorksheetIdByIndex $workbookId 1] ; # open first sheet
set rangeId [Excel::SelectRangeByString $worksheetId "A1"] ; # select range 'A1'
# Import csv file to range A1
Excel::Import $rangeId $csvfile \
-consecutive false \
-delimiter ";" \
-decimalseparator "."
# Get last column & row used...
set numCols [Excel::GetNumUsedColumns $worksheetId]
set numRows [Excel::GetNumUsedRows $worksheetId]
# Get values
puts [Excel::GetMatrixValues $worksheetId 1 1 $numRows $numCols]
} finally {
# no need to close Excel if visible...
if {![Excel::Visible $appId]} {
Excel::Close $workbookId
Excel::Quit $appId false
} else {
Cawt::Destroy ; # delete com object
}
}
结果:
{1.0 2.0 3.0} {4.0 5.0 6.0}