我只是尝试在clojure中读取excel文件的内容。我使用docjure库。当我在REPL中使用示例代码时,输出就像我想要的那样。但是在将其插入文件后,我得到了错误数量的args - 电子表格/选择表方法的错误。
以下是代码:
(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中只需要一个参数,而文件中只有两个参数?
答案 0 :(得分:3)
正如 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-sheet
和select-columns
。
要更好地了解线程最后一个宏->>
的工作原理,see its documentation。