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