Search in sources :

Example 1 with XSSFCellFill

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);
}
Also used : XSSFFont(org.apache.poi.xssf.usermodel.XSSFFont) XSSFCellFill(org.apache.poi.xssf.usermodel.extensions.XSSFCellFill) XSSFCellBorder(org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder)

Example 2 with XSSFCellFill

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);
}
Also used : XSSFCellFill(org.apache.poi.xssf.usermodel.extensions.XSSFCellFill) XSSFFont(org.apache.poi.xssf.usermodel.XSSFFont) XSSFCellBorder(org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder)

Example 3 with XSSFCellFill

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());
    }
}
Also used : DefaultIndexedColorMap(org.apache.poi.xssf.usermodel.DefaultIndexedColorMap) IndexedColorMap(org.apache.poi.xssf.usermodel.IndexedColorMap) CustomIndexedColorMap(org.apache.poi.xssf.usermodel.CustomIndexedColorMap) XSSFTableStyle(org.apache.poi.xssf.usermodel.XSSFTableStyle) IOException(java.io.IOException) XSSFCellFill(org.apache.poi.xssf.usermodel.extensions.XSSFCellFill) XmlException(org.apache.xmlbeans.XmlException) XSSFFont(org.apache.poi.xssf.usermodel.XSSFFont) XSSFCellBorder(org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder)

Example 4 with XSSFCellFill

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;
}
Also used : XSSFCellFill(org.apache.poi.xssf.usermodel.extensions.XSSFCellFill)

Example 5 with XSSFCellFill

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;
}
Also used : CTFill(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill) XSSFCellFill(org.apache.poi.xssf.usermodel.extensions.XSSFCellFill)

Aggregations

XSSFCellFill (org.apache.poi.xssf.usermodel.extensions.XSSFCellFill)10 XSSFCellBorder (org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder)4 XSSFFont (org.apache.poi.xssf.usermodel.XSSFFont)3 IOException (java.io.IOException)1 StylesTable (org.apache.poi.xssf.model.StylesTable)1 SXSSFWorkbook (org.apache.poi.xssf.streaming.SXSSFWorkbook)1 CustomIndexedColorMap (org.apache.poi.xssf.usermodel.CustomIndexedColorMap)1 DefaultIndexedColorMap (org.apache.poi.xssf.usermodel.DefaultIndexedColorMap)1 IndexedColorMap (org.apache.poi.xssf.usermodel.IndexedColorMap)1 XSSFTableStyle (org.apache.poi.xssf.usermodel.XSSFTableStyle)1 XmlException (org.apache.xmlbeans.XmlException)1 Before (org.junit.Before)1 Test (org.junit.Test)1 CTFill (org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill)1 STPatternType (org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType)1