Clojure-Docjure:方法在REPL中有效,但在File中无效



我只是尝试在clojure中读取excel文件的内容。我使用docjure库。当我在REPL中使用示例代码时,输出是我想要的。但在将其插入文件后,我得到了错误的参数数-电子表格/选择工作表方法错误。

这是代码:

(use 'dk.ative.docjure.spreadsheet)
(->> (load-workbook (str (System/getProperty "user.dir") "/resources/public/xls/test.xls")
                    (select-sheet "menu")
                    (select-columns {:A :number, :D :name})
                    ))

此方法的参数为[name ^Workbook workbook]。为什么REPL中只需要一个参数,而文件中只需要两个?

正如Alex在评论中所说,你搞砸了parens。

现在您的代码评估为:

(load-workbook (str (System/getProperty "user.dir")
                    "/resources/public/xls/test.xls")
               (select-sheet "menu")
               (select-columns {:A :number, :D :name}))

以下是实际代码的样子:

(->> "/resources/public/xls/test.xls"
     (str (System/getProperty "user.dir"))    ; prefix it with user.dir
     load-workbook                            ; load .xls workbook
     (select-sheet "menu")                    ; select menu sheet
     (select-columns {:A :number, :D :name})) ; select some columns

评估为:

(select-columns {:A :number, :D :name}
                (select-sheet "menu"
                              (load-workbook (str (System/getProperty "user.dir")
                                                  "/resources/public/xls/test.xls"))))

正如您所看到的,select-sheetselect-columns都是用两个参数调用的。

要更好地了解线程最后一个宏->>的工作原理,请参阅其文档。

相关内容

最新更新