如何将结果图迭代到CSV文件中? 当我在控制器块中使用我的方法时,我可以很好地迭代它们但是如果我把它放在服务中并调用它,它就不会识别该键并返回空行。 (it.column_1无法识别。)
class someController {
def someService
def export(Person personInstance) {
def resultRows = someService.result(personInstance)
response.setHeader("Content-disposition", "attachment; filename=sample.csv")
response.contentType = "application/vnd.ms-excel"
def outs = response.outputStream
outs << "${personInstance}\n"
outs << "Column1,Column2,Column3,Column4\n"
resultRows.each() {
outs << it.column_1 + "," + it.column_2 + "," + it.column_3 + "," + it.column_4
outs << "\n"
}
outs.flush()
outs.close()
}
}
提前谢谢。
修改 我已经包含了有效的代码。
当我将someService.result打印到控制台后,立即打印结果行
[[column_1:John,column_2:Doe,column_3:123 Main Street,column_4:(123)456-7890] [column_1:John,column_2:Doe,column_3:123 Main Street,column_4:(123)456- 7890]
使用以下代码,我得到一个excel格式的可下载CSV文件。
class someController {
def export(Person personInstance) {
def sql = new Sql(dataSource)
def resultRows = sql.rows('select * from table where person_id = ?', [personInstance.id])
[resultRows:resultRows]
response.setHeader("Content-disposition", "attachment; filename=sample.csv")
response.contentType = "application/vnd.ms-excel"
def outs = response.outputStream
outs << "${personInstance}\n"
outs << "Column1,Column2,Column3,Column4\n"
resultRows.each() {
outs << it.column_1 + "," + it.column_2 + "," + it.column_3 + "," + it.column_4
outs << "\n"
}
outs.flush()
outs.close()
}
}
编辑 - 找到答案
啊,我弄明白了这个问题。我在服务中有[resultRows:resultRows]。我删除了该行并将其放在def resultRows行下的控制器中。def export(Person personInstance) {
def resultRows = someService.result(personInstance)
[resultRows:resultRows]
....
}
谢谢你们!
答案 0 :(得分:2)
def export(Person personInstance) {
def resultRows = someService.result(personInstance)
[resultRows:resultRows]
....
}
谢谢你们!