grails项目中导出文件

来源:互联网 发布:无言网络歌手歌词 编辑:程序博客网 时间:2024/05/16 03:36
导出的Service:
import fd.task.Taskimport grails.transaction.Transactionalimport org.apache.poi.hssf.usermodel.HSSFWorkbookimport org.apache.poi.ss.usermodel.Workbookimport org.apache.poi.xssf.usermodel.XSSFWorkbook@Transactionalclass 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)    }
1 0
原创粉丝点击