Я хочу создать приложение, которое может загрузить Excel и прочитать их. и создавать PDF, Excel и Word на лету. Я использую Grails 2.4.4. и Export v 1.6.Экспорт плагина на Grails 2.4.4
Вот мой код
class AuthUserController {
def exportService
def grailsApplication
....
def list = {
if(!params.max) params.max = 10
if(params?.format && params.format != "html"){
response.contentType = grailsApplication.config.grails.mime.types[params.format]
response.setHeader("Content-disposition", "attachment; filename=AuthUser.${params.extension}")
List fields = ["username", "email"]
Map labels = ["username": "username", "email": "email"]
/* Formatter closure in previous releases
def upperCase = { value ->
return value.toUpperCase()
}
*/
// Formatter closure
def upperCase = { domain, value ->
return value.toUpperCase()
}
Map formatters = [username: upperCase]
Map parameters = [username: "admin", "column.widths": [0.2, 0.3, 0.5]]
exportService.export(params.format, response.outputStream, response.outputStream,AuthUser.list(params), [:], fields, labels, formatters, parameters)
}
[ authUserInstanceList: AuthUser.list(params) ]
}
и на модели
class AuthUser {
transient springSecurityService
String username
String password
String email
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired
static transients = ['springSecurityService']
static hasMany = [madeBillings:Billing, goodsBillings:GoodsBill, approvedRequest:TenantRequest, journals:Journal]
static constraints = {
username blank: false, unique: true
password blank: false
email blank: false, unique: true, email: true
}
static mapping = {
password column: '`password`'
tablePerHierarchy false
}
Set<AuthRole> getAuthorities() {
AuthUserAuthRole.findAllByAuthUser(this).collect { it.authRole }
}
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password
}
String toString() {
username
}
}
я стараюсь использовать http://localhost:8080/myapp/authUser/list?format=csv&extension=csv
Я нашел решение из документации на официальном плагином странице
def list = {
if(!params.max) params.max = 10
if(params?.exportFormat && params.exportFormat != "html"){ //must change to exportFormat cause format is reserved for the default grails format
response.contentType = grailsApplication.config.grails.mime.types[params.exportFormat]
response.setHeader("Content-disposition", "attachment; filename=AuthUser.${params.extension}")
exportService.export(params.exportFormat, response.outputStream,AuthUser.list(params), [:], [:])
}
// [ authUserInstanceList: AuthUser.list(params) ] you have to comment this or give an else clause since the response already called before
}
Я использовал, что плагины для моей работы, но, по 2.4.4, он просто сломан, я рассматриваю использовать Java POI для Excel или IText для PDF/слова, я Я сообщу, если мне удастся экспортировать грабли. –