首页 > 解决方案 > 如何在 tcl 中读取 xlsx 工作表文件?

问题描述

目前,我正在通过将文件转换为 CSV 格式来读取文件。有什么方法可以通过 tcl 读取 excel 工作表?

标签: tcl

解决方案


下面的示例使用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}

推荐阅读