use of org.apache.poi.xssf.usermodel.extensions.XSSFCellFill in project poi by apache.
the class StylesTable method initialize.
private void initialize() {
//CTFont ctFont = createDefaultFont();
XSSFFont xssfFont = createDefaultFont();
fonts.add(xssfFont);
CTFill[] ctFill = createDefaultFills();
fills.add(new XSSFCellFill(ctFill[0], indexedColors));
fills.add(new XSSFCellFill(ctFill[1], indexedColors));
CTBorder ctBorder = createDefaultBorder();
borders.add(new XSSFCellBorder(ctBorder));
CTXf styleXf = createDefaultXf();
styleXfs.add(styleXf);
CTXf xf = createDefaultXf();
xf.setXfId(0);
xfs.add(xf);
}
use of org.apache.poi.xssf.usermodel.extensions.XSSFCellFill in project poi by apache.
the class StylesTable method writeTo.
/**
* Write this table out as XML.
*
* @param out The stream to write to.
* @throws IOException if an error occurs while writing.
*/
public void writeTo(OutputStream out) throws IOException {
// Work on the current one
// Need to do this, as we don't handle
// all the possible entries yet
CTStylesheet styleSheet = doc.getStyleSheet();
// Formats
CTNumFmts formats = CTNumFmts.Factory.newInstance();
formats.setCount(numberFormats.size());
for (final Entry<Short, String> entry : numberFormats.entrySet()) {
CTNumFmt ctFmt = formats.addNewNumFmt();
ctFmt.setNumFmtId(entry.getKey());
ctFmt.setFormatCode(entry.getValue());
}
styleSheet.setNumFmts(formats);
int idx;
// Fonts
CTFonts ctFonts = styleSheet.getFonts();
if (ctFonts == null) {
ctFonts = CTFonts.Factory.newInstance();
}
ctFonts.setCount(fonts.size());
CTFont[] ctfnt = new CTFont[fonts.size()];
idx = 0;
for (XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont();
ctFonts.setFontArray(ctfnt);
styleSheet.setFonts(ctFonts);
// Fills
CTFills ctFills = styleSheet.getFills();
if (ctFills == null) {
ctFills = CTFills.Factory.newInstance();
}
ctFills.setCount(fills.size());
CTFill[] ctf = new CTFill[fills.size()];
idx = 0;
for (XSSFCellFill f : fills) ctf[idx++] = f.getCTFill();
ctFills.setFillArray(ctf);
styleSheet.setFills(ctFills);
// Borders
CTBorders ctBorders = styleSheet.getBorders();
if (ctBorders == null) {
ctBorders = CTBorders.Factory.newInstance();
}
ctBorders.setCount(borders.size());
CTBorder[] ctb = new CTBorder[borders.size()];
idx = 0;
for (XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder();
ctBorders.setBorderArray(ctb);
styleSheet.setBorders(ctBorders);
// Xfs
if (xfs.size() > 0) {
CTCellXfs ctXfs = styleSheet.getCellXfs();
if (ctXfs == null) {
ctXfs = CTCellXfs.Factory.newInstance();
}
ctXfs.setCount(xfs.size());
ctXfs.setXfArray(xfs.toArray(new CTXf[xfs.size()]));
styleSheet.setCellXfs(ctXfs);
}
// Style xfs
if (styleXfs.size() > 0) {
CTCellStyleXfs ctSXfs = styleSheet.getCellStyleXfs();
if (ctSXfs == null) {
ctSXfs = CTCellStyleXfs.Factory.newInstance();
}
ctSXfs.setCount(styleXfs.size());
ctSXfs.setXfArray(styleXfs.toArray(new CTXf[styleXfs.size()]));
styleSheet.setCellStyleXfs(ctSXfs);
}
// Style dxfs
if (dxfs.size() > 0) {
CTDxfs ctDxfs = styleSheet.getDxfs();
if (ctDxfs == null) {
ctDxfs = CTDxfs.Factory.newInstance();
}
ctDxfs.setCount(dxfs.size());
ctDxfs.setDxfArray(dxfs.toArray(new CTDxf[dxfs.size()]));
styleSheet.setDxfs(ctDxfs);
}
// Save
doc.save(out, DEFAULT_XML_OPTIONS);
}
use of org.apache.poi.xssf.usermodel.extensions.XSSFCellFill in project poi by apache.
the class StylesTable method readFrom.
/**
* Read this shared styles table from an XML file.
*
* @param is The input stream containing the XML document.
* @throws IOException if an error occurs while reading.
*/
public void readFrom(InputStream is) throws IOException {
try {
doc = StyleSheetDocument.Factory.parse(is, DEFAULT_XML_OPTIONS);
CTStylesheet styleSheet = doc.getStyleSheet();
// Grab all the different bits we care about
// keep this first, as some constructors below want it
IndexedColorMap customColors = CustomIndexedColorMap.fromColors(styleSheet.getColors());
if (customColors != null)
indexedColors = customColors;
CTNumFmts ctfmts = styleSheet.getNumFmts();
if (ctfmts != null) {
for (CTNumFmt nfmt : ctfmts.getNumFmtArray()) {
short formatId = (short) nfmt.getNumFmtId();
numberFormats.put(formatId, nfmt.getFormatCode());
}
}
CTFonts ctfonts = styleSheet.getFonts();
if (ctfonts != null) {
int idx = 0;
for (CTFont font : ctfonts.getFontArray()) {
// Create the font and save it. Themes Table supplied later
XSSFFont f = new XSSFFont(font, idx, indexedColors);
fonts.add(f);
idx++;
}
}
CTFills ctfills = styleSheet.getFills();
if (ctfills != null) {
for (CTFill fill : ctfills.getFillArray()) {
fills.add(new XSSFCellFill(fill, indexedColors));
}
}
CTBorders ctborders = styleSheet.getBorders();
if (ctborders != null) {
for (CTBorder border : ctborders.getBorderArray()) {
borders.add(new XSSFCellBorder(border, indexedColors));
}
}
CTCellXfs cellXfs = styleSheet.getCellXfs();
if (cellXfs != null)
xfs.addAll(Arrays.asList(cellXfs.getXfArray()));
CTCellStyleXfs cellStyleXfs = styleSheet.getCellStyleXfs();
if (cellStyleXfs != null)
styleXfs.addAll(Arrays.asList(cellStyleXfs.getXfArray()));
CTDxfs styleDxfs = styleSheet.getDxfs();
if (styleDxfs != null)
dxfs.addAll(Arrays.asList(styleDxfs.getDxfArray()));
CTTableStyles ctTableStyles = styleSheet.getTableStyles();
if (ctTableStyles != null) {
int idx = 0;
for (CTTableStyle style : Arrays.asList(ctTableStyles.getTableStyleArray())) {
tableStyles.put(style.getName(), new XSSFTableStyle(idx, styleDxfs, style, indexedColors));
idx++;
}
}
} catch (XmlException e) {
throw new IOException(e.getLocalizedMessage());
}
}
use of org.apache.poi.xssf.usermodel.extensions.XSSFCellFill in project poi by apache.
the class XSSFCellStyle method getFillForegroundXSSFColor.
/**
* Get the foreground fill color.
*
* @return XSSFColor - fill color or <code>null</code> if not set
*/
public XSSFColor getFillForegroundXSSFColor() {
// bug 56295: handle missing applyFill attribute as "true" because Excel does as well
if (_cellXf.isSetApplyFill() && !_cellXf.getApplyFill())
return null;
int fillIndex = (int) _cellXf.getFillId();
XSSFCellFill fg = _stylesSource.getFillAt(fillIndex);
XSSFColor fillForegroundColor = fg.getFillForegroundColor();
if (fillForegroundColor != null && _theme != null) {
_theme.inheritFromThemeAsRequired(fillForegroundColor);
}
return fillForegroundColor;
}
use of org.apache.poi.xssf.usermodel.extensions.XSSFCellFill in project poi by apache.
the class XSSFCellStyle method getCTFill.
/**
* Get a <b>copy</b> of the currently used CTFill, if none is used, return a new instance.
*/
private CTFill getCTFill() {
CTFill ct;
// bug 56295: handle missing applyFill attribute as "true" because Excel does as well
if (!_cellXf.isSetApplyFill() || _cellXf.getApplyFill()) {
int fillIndex = (int) _cellXf.getFillId();
XSSFCellFill cf = _stylesSource.getFillAt(fillIndex);
ct = (CTFill) cf.getCTFill().copy();
} else {
ct = CTFill.Factory.newInstance();
}
return ct;
}
Aggregations