package com.brightgenerous.poi;
import static com.brightgenerous.poi.PoiMethods.*;
import static org.apache.poi.ss.usermodel.CellStyle.*;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.List;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import com.brightgenerous.lang.Args;
import com.brightgenerous.poi.writer.AbstractSheetWriter;
import com.brightgenerous.poi.writer.WorkbookWriterBuilder;
public class TestPoiWriter {
public static class SheetData implements Serializable {
private static final long serialVersionUID = 1L;
private List<RowData> rows;
public SheetData(List<RowData> rows) {
this.rows = rows;
}
public List<RowData> getRows() {
return rows;
}
public void setRows(List<RowData> rows) {
this.rows = rows;
}
}
private final SheetData data;
public TestPoiWriter(SheetData data) {
Args.notNull(data, "data");
this.data = data;
}
public void write(OutputStream os) throws IOException {
WorkbookWriterBuilder wwb = WorkbookWriterBuilder.create();
wwb.addSheet("sheet_hoge", new SheetWriter(data));
wwb.build().write(os);
}
private static class SheetWriter extends AbstractSheetWriter {
private final SheetData data;
public SheetWriter(SheetData data) {
this.data = data;
}
@Override
public void write(Workbook workbook, int index, Sheet sheet, CellStyleRegister reg) {
final int START_ROW = 0;
final int START_COL = 0;
int row = START_ROW;
int col = START_COL;
{
for (int i = 0; i < data.getRows().size(); i++) {
col = START_COL;
row += 1;
RowData rd = data.getRows().get(i);
col += addLabelCell(
sheet,
col,
row,
reg.getCellStyle(builder().borderBottom(BORDER_THIN)
.borderLeft(BORDER_THIN).borderRight(BORDER_THIN).build()),
rd.getValue1());
col += addNumberCell(
sheet,
col,
row,
reg.getCellStyle(builder().alignment(ALIGN_LEFT)
.borderBottom(BORDER_THIN).borderLeft(BORDER_THIN)
.borderRight(BORDER_THIN).build()), rd.getValue2());
col += addDateTimeCell(
sheet,
col,
row,
2,
reg.getCellStyle(builder().alignment(ALIGN_LEFT)
.borderBottom(BORDER_THIN).borderLeft(BORDER_THIN)
.borderRight(BORDER_THIN).build()), rd.getValue3());
}
}
}
private CellStyleKeyBuilder builder() {
CellStyleKeyBuilder ret = new CellStyleKeyBuilder();
return ret.alignment(ALIGN_CENTER).verticalAlignment(VERTICAL_CENTER)
.fontHeight((short) (11 * 20)).fontName("MS 明朝");
}
}
}