Grailsサンプル-Excelドキュメントのエクスポート

3073 ワード

プログラムはただ1つのページだけあって、ダウンロードのリンクをクリックして、Excelのドキュメントをダウンロードして、このドキュメントは2つのsheetがあって、この2つのsheetと中の内容はJExcelApiを使って生成しました.
  • ダウンロードページ
  • を表示
    ダウンロードページのcontrollerとviewを追加
    SampleExcelController .groovy
    
    package com.tutorial
    
    class SampleExcelController {
        def index() { }
    }
    

    index.gsp
    
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="layout" content="main"/>
        <title>Simple Chat</title>
    </head>
    
    <body>
        <g:link action="downloadSampleExcel">Download Sample Excel</g:link>
    </body>
    </html>
    
  • JExcelApiライブラリファイル
  • を導入
    config/BuildConfig.groovyにjexcelapiのパッケージファイルを導入
    
    dependencies {
        runtime 'net.sourceforge.jexcelapi:jxl:2.6.12'
    }
    
  • Excelドキュメントダウンロード
  • 次のコードは、Excelドキュメントを生成し、ダウンロードするために使用されます.
    
    package com.tutorial
    
    import jxl.Workbook
    import jxl.write.Label
    import jxl.write.WritableSheet
    import jxl.write.WritableWorkbook
    
    class SampleExcelController {
    
        def index() { }
    
        def downloadSampleExcel() {
            response.setContentType('application/vnd.ms-excel')
            response.setHeader('Content-Disposition', 'Attachment;Filename="example.xls"')
    
            WritableWorkbook workbook = Workbook.createWorkbook(response.outputStream)
            WritableSheet sheet1 = workbook.createSheet("Students", 0)
            sheet1.addCell(new Label(0,0, "First Name"))
            sheet1.addCell(new Label(1,0, "Last Name"))
            sheet1.addCell(new Label(2,0, "Age"))
    
            sheet1.addCell(new Label(0,1, "John"))
            sheet1.addCell(new Label(1,1, "Doe"))
            sheet1.addCell(new Label(2,1, "20"))
    
            sheet1.addCell(new Label(0,2, "Jane"))
            sheet1.addCell(new Label(1,2, "Smith"))
            sheet1.addCell(new Label(2,2, "18"))
    
            WritableSheet sheet2 = workbook.createSheet("Courses", 1)
            sheet2.addCell(new Label(0,0, "Course Name"))
            sheet2.addCell(new Label(1,0, "Number of units"))
    
            sheet2.addCell(new Label(0,1, "Algebra"))
            sheet2.addCell(new Label(1,1, "3"))
    
            sheet2.addCell(new Label(0,2, "English Grammar"))
            sheet2.addCell(new Label(1,2, "5"))
    
            workbook.write();
            workbook.close();
        }
    }
    
  • 知識点
  • 1.次のコードは、ダウンロードするドキュメントのタイプとファイル名をブラウザに伝えます.
    
    response.setContentType('application/vnd.ms-excel')
    response.setHeader('Content-Disposition', 'Attachment;Filename="example.xls"')
    

    2.WritableWorkbookはExcelドキュメントのインスタンスを作成するために使用され、response.outputStream応答により、このドキュメントはサーバ側に保存されるのではなく、ブラウザに直接送信されることを示します.
    3.WritableSheetの2番目のパラメータはsheetのインデックスで、0は1番目の
    4.addCellの1番目と2番目のパラメータは、Excelテーブルの座標値です.
  • 備考
  • 上記のコードは、プラグインを使用しないでExcelドキュメントをどのように生成するかを簡単に紹介しているだけで、自分のプロジェクトの必要に応じて使用を変更することができます.ここは完全なコードダウンロードアドレスです