在現今開發需求中,將資料以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,以利後續相關作業。
文章標籤
全站熱搜