导出的Service:
import fd.task.Task
import grails.transaction.Transactional
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.xssf.usermodel.XSSFWorkbook
@Transactional
class TakinExportExcelService {
def grailsApplication
/**
*
* @param sheetName
* @param domainName
* @param domainInstanceList
* @param exportProperties
* @param excel2007
* @return
*/
def simpleExport(String sheetName, String domainName, List domainInstanceList, List<String> exportProperties, boolean excel2007 = true) {
def workbook = getWorkBook(excel2007)
def sheet = workbook.createSheet(sheetName)
// def message = grailsApplication.mainContext.getBean('taglib.com.TakinMessageTagLib')
def headerRow = sheet.createRow(0)
exportProperties.eachWithIndex { p, i ->
// headerRow.createCell(i).setCellValue(String.valueOf(message.property(domain:domainName, property: p)))
}
domainInstanceList.eachWithIndex { Object domainInstance, int rowIndex ->
def dataRow = sheet.createRow(rowIndex+1)
exportProperties.eachWithIndex { p, i ->
dataRow.createCell(i).setCellValue(domainInstance[p] ? domainInstance[p].toString() : '')
}
}
return workbook
}
protected Workbook getWorkBook(boolean excel2007 = true) {
return excel2007 ? new XSSFWorkbook() : new HSSFWorkbook()
}
}
controller: def export() {
if ( params ) {
params.remove('max')
params.remove('offset')
}
def List = domain.createCriteria().list(params) {
ilike("taskName", "%" + "2" + "%")
}
def exportProperties = ['taskName','taskType','taskCategory','groupId','firstResponsible','beginDate','planEndDate','actualEndDate','finishPercent','finishState','finalState','dateCreated','createUser','lastUpdated','updateUser','deleteFlag']
// if ( SpringSecurityUtils.ifAnyGranted('ROLE_SUPER_ADMIN,ROLE_MAIN_CORPORATION_USER,ROLE_SUB_CORPORATION_USER')) {
// exportProperties.add(0, 'merchantNumber')
// }
String filename = "xxx.xlsx"
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1")
def workbook = takinExportExcelService.simpleExport('xxx', 'domain', List, exportProperties, true)
response.setContentType('application/vnd.ms-excel')
response.setHeader('Content-Disposition', 'Attachment;Filename="' + filename + '"')
workbook.write(response.outputStream)
}