package ro.nextreports.server.web.analysis.feature.export;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
import ro.nextreports.server.web.analysis.AnalysisDataProvider;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
public class XlsxResource extends ExportResource {
private static final long serialVersionUID = 1L;
private AnalysisDataProvider provider;
private transient XSSFWorkbook wb;
private transient XSSFSheet sheet;
private transient XSSFRow detailRow;
public XlsxResource(AnalysisDataProvider provider) {
super(provider, EXCEL_CONTENT_TYPE);
}
@Override
protected void printHeader(List<String> header, ByteArrayOutputStream out) {
wb = new XSSFWorkbook();
sheet = wb.createSheet("NextReports");
XSSFRow headerRow = sheet.createRow(0);
int col = 0;
if (header != null) {
for (String s : header) {
XSSFCell cell = headerRow.createCell(col);
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
if (s == null) {
s = "";
}
cell.setCellValue(wb.getCreationHelper().createRichTextString(s));
col++;
}
}
}
@Override
protected void createDetailRow(int row) {
detailRow = sheet.createRow(row);
}
@Override
protected void createDetailCell(int column, Object element) {
XSSFCell cell = detailRow.createCell(column);
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
cell.setCellValue(wb.getCreationHelper().createRichTextString(element.toString()));
}
@Override
protected void endDetailRow() {
}
@Override
protected void write(ByteArrayOutputStream out) {
try {
wb.write(out);
} catch (IOException e) {
e.printStackTrace();
}
}
}