在現今開發需求中,將資料以Excel、CSV、PDF等方式匯出的需求已經相當普遍,以下使用Java Spring 框架開發並實作提供Excel下載功能之範例。

 


首先要先在pom.xml設定 dependency 套件,將org.apache.poi資料載入到專案之中。

 

pom.xml

<dependencies>

	<dependency>
		<groupId>org.apache.poi</groupId>
		<artifactId>poi-ooxml</artifactId>
		<version>4.1.0</version>
	</dependency>

<dependencies>

 

然後可以過XSSFWorkbook、XSSFSheet等方式建立Excel的相關內容。

這邊Workbook為Excel的基本單位,隨後透過Sheet建立分頁,並透過row 或 cell的方式將內容放置到Excel之中。

 

package com.digicentre.tsbapi.util;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.ByteArrayOutputStream;
import java.io.IOException;


public class XlsFactory  {

    private Workbook workbook;
    private Sheet sheet;

    public XlsFactory(Data2Row data2Row){
        workbook = new XSSFWorkbook();
    }


    public void addSheet(String sheetname, List<String> data){
        sheet = workbook.createSheet(sheetname);
        for(int i=0;i<data.size();i++){
            DataModel item = data.get(i);
            Row row = sheet.createRow(i);
            row.createCell(0).setCellValue("cell0");
            row.createCell(1).setCellValue(data.get(i));
        }
    }

    public byte[] toBytes(){
        byte[] res = null;
        try{
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            workbook.write(baos);
            res = baos.toByteArray();
        }catch(IOException  e){
            logger.error(e.getMessage());
        }

        return res;
    }
}

 

最後因為一般網站可以提供檔案下載服務可以將檔案以byte回傳即可以正常下載,

所以在此建立一個toBytes的方法,主要目的是要將以建構好的Excel檔案轉換成byte array,以利後續相關作業。 

 

 

arrow
arrow
    文章標籤
    xlsx檔 javaspring
    全站熱搜
    創作者介紹
    創作者 Lung-Yu,Tsai 的頭像
    Lung-Yu,Tsai

    Lung-Yu,Tsai 的部落格

    Lung-Yu,Tsai 發表在 痞客邦 留言(0) 人氣()