grails项目中导出文件

导出的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)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值