01 เมษายน 2552

JasperReport Export Text File

วิธีการ export Jasper Report เป็น Text Format เขียนแบบนี้ครับ

def index = {
def reportFile = servletContext.getResource("/report/test_text.jasper")
def reportName = "testing"
def parameters = new HashMap();
createPdfFile(generateTextReport(reportFile, parameters).toByteArray(), reportName)
return null;
}

private generateTextReport(jasperFile, parameters) {
InputStream input = jasperFile.openStream()
JRTextExporter exporter = new JRTextExporter()
ByteArrayOutputStream byteArray = new ByteArrayOutputStream()

def env = grails.util.GrailsUtil.environment
def config = new ConfigSlurper(env).parse(new File('./grails-app/conf/DataSource.groovy').toURL())
def url = config.dataSource.url
def driverName = config.dataSource.driverClassName
def username = config.dataSource.username
def password = config.dataSource.password

Class.forName(driverName)
Connection connection = DriverManager.getConnection(url, username, password)
JasperPrint jasperPrint = JasperFillManager.fillReport(input, null, connection)
jasperPrint.setLocaleCode(Locale.getDefault().getCountry())

exporter.setParameter(JRTextExporterParameter.CHARACTER_ENCODING, "UTF-8");
exporter.setParameter(JRTextExporterParameter.PAGE_WIDTH, 76);
exporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, 80);
exporter.setParameter(JRTextExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRTextExporterParameter.OUTPUT_STREAM, byteArray);
exporter.exportReport()
return byteArray
}

private createPdfFile(contentBinary, fileName) {
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".txt");
response.contentType = "text/plain"
response.outputStream << contentBinary
}

3 ความคิดเห็น:

  1. เอา code นี้ไปใช้ยังไงคับ
    ผมไม่รู้ว่าจาเอาไปวางตรงไหน
    ลองดูใน server มันเป็น jar file
    export ออกมาก็เป็น .class แก้ไรไม่ได้อ่ะคับ
    อธิบายเพิ่มเติมได้ไหมครับ

    ขอบคุณคับ

    ตอบลบ
  2. code เป็น method ที่ไปเรียก jasper file ที่ compile แล้วชื่อ test_text.jasper นะครับ
    ที่ผมเอาไปใช้ คือ เหมือนตอน กดปุ่ม export text file จากหน้า web นะครับ
    ก็จะมาเรียก method ที่ชื่อ index โดยเจ้า index นี้ก็จะ export report ออกมา แล้วเอามาแปลงเป็น stream ส่งออกไปหน้า web นะครับ

    ตอบลบ