Fix inconsistent indents
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677369 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
602832bda6
commit
c76db74929
@ -62,73 +62,73 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument;
|
||||
* Table of styles shared across all sheets in a workbook.
|
||||
*/
|
||||
public class StylesTable extends POIXMLDocumentPart {
|
||||
private final Map<Integer, String> numberFormats = new HashMap<Integer,String>();
|
||||
private final boolean[] usedNumberFormats = new boolean[SpreadsheetVersion.EXCEL2007.getMaxCellStyles()];
|
||||
private final List<XSSFFont> fonts = new ArrayList<XSSFFont>();
|
||||
private final List<XSSFCellFill> fills = new ArrayList<XSSFCellFill>();
|
||||
private final List<XSSFCellBorder> borders = new ArrayList<XSSFCellBorder>();
|
||||
private final List<CTXf> styleXfs = new ArrayList<CTXf>();
|
||||
private final List<CTXf> xfs = new ArrayList<CTXf>();
|
||||
private final Map<Integer, String> numberFormats = new HashMap<Integer,String>();
|
||||
private final boolean[] usedNumberFormats = new boolean[SpreadsheetVersion.EXCEL2007.getMaxCellStyles()];
|
||||
private final List<XSSFFont> fonts = new ArrayList<XSSFFont>();
|
||||
private final List<XSSFCellFill> fills = new ArrayList<XSSFCellFill>();
|
||||
private final List<XSSFCellBorder> borders = new ArrayList<XSSFCellBorder>();
|
||||
private final List<CTXf> styleXfs = new ArrayList<CTXf>();
|
||||
private final List<CTXf> xfs = new ArrayList<CTXf>();
|
||||
|
||||
private final List<CTDxf> dxfs = new ArrayList<CTDxf>();
|
||||
private final List<CTDxf> dxfs = new ArrayList<CTDxf>();
|
||||
|
||||
/**
|
||||
* The first style id available for use as a custom style
|
||||
*/
|
||||
public static final int FIRST_CUSTOM_STYLE_ID = BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + 1;
|
||||
private static final int MAXIMUM_STYLE_ID = SpreadsheetVersion.EXCEL2007.getMaxCellStyles();
|
||||
/**
|
||||
* The first style id available for use as a custom style
|
||||
*/
|
||||
public static final int FIRST_CUSTOM_STYLE_ID = BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + 1;
|
||||
private static final int MAXIMUM_STYLE_ID = SpreadsheetVersion.EXCEL2007.getMaxCellStyles();
|
||||
|
||||
private StyleSheetDocument doc;
|
||||
private ThemesTable theme;
|
||||
private StyleSheetDocument doc;
|
||||
private ThemesTable theme;
|
||||
|
||||
/**
|
||||
* Create a new, empty StylesTable
|
||||
*/
|
||||
public StylesTable() {
|
||||
super();
|
||||
doc = StyleSheetDocument.Factory.newInstance();
|
||||
doc.addNewStyleSheet();
|
||||
// Initialization required in order to make the document readable by MSExcel
|
||||
initialize();
|
||||
}
|
||||
/**
|
||||
* Create a new, empty StylesTable
|
||||
*/
|
||||
public StylesTable() {
|
||||
super();
|
||||
doc = StyleSheetDocument.Factory.newInstance();
|
||||
doc.addNewStyleSheet();
|
||||
// Initialization required in order to make the document readable by MSExcel
|
||||
initialize();
|
||||
}
|
||||
|
||||
public StylesTable(PackagePart part, PackageRelationship rel) throws IOException {
|
||||
super(part, rel);
|
||||
readFrom(part.getInputStream());
|
||||
}
|
||||
public StylesTable(PackagePart part, PackageRelationship rel) throws IOException {
|
||||
super(part, rel);
|
||||
readFrom(part.getInputStream());
|
||||
}
|
||||
|
||||
public ThemesTable getTheme() {
|
||||
public ThemesTable getTheme() {
|
||||
return theme;
|
||||
}
|
||||
|
||||
public void setTheme(ThemesTable theme) {
|
||||
this.theme = theme;
|
||||
|
||||
|
||||
// Pass the themes table along to things which need to
|
||||
// know about it, but have already been created by now
|
||||
for(XSSFFont font : fonts) {
|
||||
font.setThemesTable(theme);
|
||||
font.setThemesTable(theme);
|
||||
}
|
||||
for(XSSFCellBorder border : borders) {
|
||||
border.setThemesTable(theme);
|
||||
border.setThemesTable(theme);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
@SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support
|
||||
protected void readFrom(InputStream is) throws IOException {
|
||||
try {
|
||||
doc = StyleSheetDocument.Factory.parse(is);
|
||||
protected void readFrom(InputStream is) throws IOException {
|
||||
try {
|
||||
doc = StyleSheetDocument.Factory.parse(is);
|
||||
|
||||
CTStylesheet styleSheet = doc.getStyleSheet();
|
||||
|
||||
// Grab all the different bits we care about
|
||||
CTNumFmts ctfmts = styleSheet.getNumFmts();
|
||||
CTNumFmts ctfmts = styleSheet.getNumFmts();
|
||||
if( ctfmts != null){
|
||||
for (CTNumFmt nfmt : ctfmts.getNumFmtArray()) {
|
||||
int formatId = (int)nfmt.getNumFmtId();
|
||||
@ -139,14 +139,14 @@ public class StylesTable extends POIXMLDocumentPart {
|
||||
|
||||
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);
|
||||
fonts.add(f);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
int idx = 0;
|
||||
for (CTFont font : ctfonts.getFontArray()) {
|
||||
// Create the font and save it. Themes Table supplied later
|
||||
XSSFFont f = new XSSFFont(font, idx);
|
||||
fonts.add(f);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
CTFills ctfills = styleSheet.getFills();
|
||||
if(ctfills != null){
|
||||
for (CTFill fill : ctfills.getFillArray()) {
|
||||
@ -168,408 +168,407 @@ public class StylesTable extends POIXMLDocumentPart {
|
||||
if(cellStyleXfs != null) styleXfs.addAll(Arrays.asList(cellStyleXfs.getXfArray()));
|
||||
|
||||
CTDxfs styleDxfs = styleSheet.getDxfs();
|
||||
if(styleDxfs != null) dxfs.addAll(Arrays.asList(styleDxfs.getDxfArray()));
|
||||
if(styleDxfs != null) dxfs.addAll(Arrays.asList(styleDxfs.getDxfArray()));
|
||||
|
||||
} catch (XmlException e) {
|
||||
throw new IOException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
} catch (XmlException e) {
|
||||
throw new IOException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================
|
||||
// Start of style related getters and setters
|
||||
// ===========================================================
|
||||
// ===========================================================
|
||||
// Start of style related getters and setters
|
||||
// ===========================================================
|
||||
|
||||
public String getNumberFormatAt(int idx) {
|
||||
return numberFormats.get(idx);
|
||||
}
|
||||
public String getNumberFormatAt(int idx) {
|
||||
return numberFormats.get(idx);
|
||||
}
|
||||
|
||||
public int putNumberFormat(String fmt) {
|
||||
if (numberFormats.containsValue(fmt)) {
|
||||
// Find the key, and return that
|
||||
for (Entry<Integer,String> numFmt : numberFormats.entrySet()) {
|
||||
if(numFmt.getValue().equals(fmt)) {
|
||||
return numFmt.getKey();
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("Found the format, but couldn't figure out where - should never happen!");
|
||||
}
|
||||
public int putNumberFormat(String fmt) {
|
||||
if (numberFormats.containsValue(fmt)) {
|
||||
// Find the key, and return that
|
||||
for (Entry<Integer,String> numFmt : numberFormats.entrySet()) {
|
||||
if(numFmt.getValue().equals(fmt)) {
|
||||
return numFmt.getKey();
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("Found the format, but couldn't figure out where - should never happen!");
|
||||
}
|
||||
|
||||
// Find a spare key, and add that
|
||||
for (int i=FIRST_CUSTOM_STYLE_ID; i<usedNumberFormats.length; i++) {
|
||||
if (!usedNumberFormats[i]) {
|
||||
// Find a spare key, and add that
|
||||
for (int i=FIRST_CUSTOM_STYLE_ID; i<usedNumberFormats.length; i++) {
|
||||
if (!usedNumberFormats[i]) {
|
||||
usedNumberFormats[i] = true;
|
||||
numberFormats.put(i, fmt);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("The maximum number of Data Formats was exceeded. " +
|
||||
"You can define up to " + usedNumberFormats.length + " formats in a .xlsx Workbook");
|
||||
}
|
||||
numberFormats.put(i, fmt);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("The maximum number of Data Formats was exceeded. " +
|
||||
"You can define up to " + usedNumberFormats.length + " formats in a .xlsx Workbook");
|
||||
}
|
||||
|
||||
public XSSFFont getFontAt(int idx) {
|
||||
return fonts.get(idx);
|
||||
}
|
||||
public XSSFFont getFontAt(int idx) {
|
||||
return fonts.get(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Records the given font in the font table.
|
||||
* Will re-use an existing font index if this
|
||||
* font matches another, EXCEPT if forced
|
||||
* registration is requested.
|
||||
* This allows people to create several fonts
|
||||
* then customise them later.
|
||||
* Note - End Users probably want to call
|
||||
* {@link XSSFFont#registerTo(StylesTable)}
|
||||
*/
|
||||
public int putFont(XSSFFont font, boolean forceRegistration) {
|
||||
int idx = -1;
|
||||
if(!forceRegistration) {
|
||||
idx = fonts.indexOf(font);
|
||||
}
|
||||
/**
|
||||
* Records the given font in the font table.
|
||||
* Will re-use an existing font index if this
|
||||
* font matches another, EXCEPT if forced
|
||||
* registration is requested.
|
||||
* This allows people to create several fonts
|
||||
* then customise them later.
|
||||
* Note - End Users probably want to call
|
||||
* {@link XSSFFont#registerTo(StylesTable)}
|
||||
*/
|
||||
public int putFont(XSSFFont font, boolean forceRegistration) {
|
||||
int idx = -1;
|
||||
if(!forceRegistration) {
|
||||
idx = fonts.indexOf(font);
|
||||
}
|
||||
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
|
||||
idx = fonts.size();
|
||||
fonts.add(font);
|
||||
return idx;
|
||||
}
|
||||
public int putFont(XSSFFont font) {
|
||||
return putFont(font, false);
|
||||
}
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
|
||||
public XSSFCellStyle getStyleAt(int idx) {
|
||||
int styleXfId = 0;
|
||||
idx = fonts.size();
|
||||
fonts.add(font);
|
||||
return idx;
|
||||
}
|
||||
public int putFont(XSSFFont font) {
|
||||
return putFont(font, false);
|
||||
}
|
||||
|
||||
// 0 is the empty default
|
||||
if(xfs.get(idx).getXfId() > 0) {
|
||||
styleXfId = (int) xfs.get(idx).getXfId();
|
||||
}
|
||||
public XSSFCellStyle getStyleAt(int idx) {
|
||||
int styleXfId = 0;
|
||||
|
||||
return new XSSFCellStyle(idx, styleXfId, this, theme);
|
||||
}
|
||||
public int putStyle(XSSFCellStyle style) {
|
||||
CTXf mainXF = style.getCoreXf();
|
||||
// 0 is the empty default
|
||||
if(xfs.get(idx).getXfId() > 0) {
|
||||
styleXfId = (int) xfs.get(idx).getXfId();
|
||||
}
|
||||
|
||||
if(! xfs.contains(mainXF)) {
|
||||
xfs.add(mainXF);
|
||||
}
|
||||
return xfs.indexOf(mainXF);
|
||||
}
|
||||
return new XSSFCellStyle(idx, styleXfId, this, theme);
|
||||
}
|
||||
public int putStyle(XSSFCellStyle style) {
|
||||
CTXf mainXF = style.getCoreXf();
|
||||
|
||||
public XSSFCellBorder getBorderAt(int idx) {
|
||||
return borders.get(idx);
|
||||
}
|
||||
if(! xfs.contains(mainXF)) {
|
||||
xfs.add(mainXF);
|
||||
}
|
||||
return xfs.indexOf(mainXF);
|
||||
}
|
||||
|
||||
public int putBorder(XSSFCellBorder border) {
|
||||
int idx = borders.indexOf(border);
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
borders.add(border);
|
||||
border.setThemesTable(theme);
|
||||
return borders.size() - 1;
|
||||
}
|
||||
public XSSFCellBorder getBorderAt(int idx) {
|
||||
return borders.get(idx);
|
||||
}
|
||||
|
||||
public XSSFCellFill getFillAt(int idx) {
|
||||
return fills.get(idx);
|
||||
}
|
||||
public int putBorder(XSSFCellBorder border) {
|
||||
int idx = borders.indexOf(border);
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
borders.add(border);
|
||||
border.setThemesTable(theme);
|
||||
return borders.size() - 1;
|
||||
}
|
||||
|
||||
public List<XSSFCellBorder> getBorders(){
|
||||
return borders;
|
||||
}
|
||||
public XSSFCellFill getFillAt(int idx) {
|
||||
return fills.get(idx);
|
||||
}
|
||||
|
||||
public List<XSSFCellFill> getFills(){
|
||||
return fills;
|
||||
}
|
||||
public List<XSSFCellBorder> getBorders(){
|
||||
return borders;
|
||||
}
|
||||
|
||||
public List<XSSFFont> getFonts(){
|
||||
return fonts;
|
||||
}
|
||||
public List<XSSFCellFill> getFills(){
|
||||
return fills;
|
||||
}
|
||||
|
||||
public Map<Integer, String> getNumberFormats(){
|
||||
return numberFormats;
|
||||
}
|
||||
public List<XSSFFont> getFonts(){
|
||||
return fonts;
|
||||
}
|
||||
|
||||
public int putFill(XSSFCellFill fill) {
|
||||
int idx = fills.indexOf(fill);
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
fills.add(fill);
|
||||
return fills.size() - 1;
|
||||
}
|
||||
public Map<Integer, String> getNumberFormats(){
|
||||
return numberFormats;
|
||||
}
|
||||
|
||||
public CTXf getCellXfAt(int idx) {
|
||||
return xfs.get(idx);
|
||||
}
|
||||
public int putCellXf(CTXf cellXf) {
|
||||
xfs.add(cellXf);
|
||||
return xfs.size();
|
||||
}
|
||||
public void replaceCellXfAt(int idx, CTXf cellXf) {
|
||||
xfs.set(idx, cellXf);
|
||||
}
|
||||
public int putFill(XSSFCellFill fill) {
|
||||
int idx = fills.indexOf(fill);
|
||||
if (idx != -1) {
|
||||
return idx;
|
||||
}
|
||||
fills.add(fill);
|
||||
return fills.size() - 1;
|
||||
}
|
||||
|
||||
public CTXf getCellStyleXfAt(int idx) {
|
||||
return idx < styleXfs.size() ? styleXfs.get(idx) : null;
|
||||
}
|
||||
public int putCellStyleXf(CTXf cellStyleXf) {
|
||||
styleXfs.add(cellStyleXf);
|
||||
return styleXfs.size();
|
||||
}
|
||||
public void replaceCellStyleXfAt(int idx, CTXf cellStyleXf) {
|
||||
styleXfs.set(idx, cellStyleXf);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the size of cell styles
|
||||
*/
|
||||
public int getNumCellStyles(){
|
||||
public CTXf getCellXfAt(int idx) {
|
||||
return xfs.get(idx);
|
||||
}
|
||||
public int putCellXf(CTXf cellXf) {
|
||||
xfs.add(cellXf);
|
||||
return xfs.size();
|
||||
}
|
||||
public void replaceCellXfAt(int idx, CTXf cellXf) {
|
||||
xfs.set(idx, cellXf);
|
||||
}
|
||||
|
||||
public CTXf getCellStyleXfAt(int idx) {
|
||||
return idx < styleXfs.size() ? styleXfs.get(idx) : null;
|
||||
}
|
||||
public int putCellStyleXf(CTXf cellStyleXf) {
|
||||
styleXfs.add(cellStyleXf);
|
||||
return styleXfs.size();
|
||||
}
|
||||
public void replaceCellStyleXfAt(int idx, CTXf cellStyleXf) {
|
||||
styleXfs.set(idx, cellStyleXf);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the size of cell styles
|
||||
*/
|
||||
public int getNumCellStyles(){
|
||||
// Each cell style has a unique xfs entry
|
||||
// Several might share the same styleXfs entry
|
||||
return xfs.size();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getNumberFormatSize() {
|
||||
return numberFormats.size();
|
||||
}
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getNumberFormatSize() {
|
||||
return numberFormats.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getXfsSize() {
|
||||
return xfs.size();
|
||||
}
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getStyleXfsSize() {
|
||||
return styleXfs.size();
|
||||
}
|
||||
/**
|
||||
* For unit testing only!
|
||||
*/
|
||||
public CTStylesheet getCTStylesheet() {
|
||||
return doc.getStyleSheet();
|
||||
}
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getXfsSize() {
|
||||
return xfs.size();
|
||||
}
|
||||
/**
|
||||
* For unit testing only
|
||||
*/
|
||||
public int _getStyleXfsSize() {
|
||||
return styleXfs.size();
|
||||
}
|
||||
/**
|
||||
* For unit testing only!
|
||||
*/
|
||||
public CTStylesheet getCTStylesheet() {
|
||||
return doc.getStyleSheet();
|
||||
}
|
||||
public int _getDXfsSize() {
|
||||
return dxfs.size();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS);
|
||||
/**
|
||||
* 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 {
|
||||
XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS);
|
||||
|
||||
// Work on the current one
|
||||
// Need to do this, as we don't handle
|
||||
// all the possible entries yet
|
||||
CTStylesheet styleSheet = doc.getStyleSheet();
|
||||
// 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 (Entry<Integer, String> fmt : numberFormats.entrySet()) {
|
||||
CTNumFmt ctFmt = formats.addNewNumFmt();
|
||||
ctFmt.setNumFmtId(fmt.getKey());
|
||||
ctFmt.setFormatCode(fmt.getValue());
|
||||
}
|
||||
styleSheet.setNumFmts(formats);
|
||||
// Formats
|
||||
CTNumFmts formats = CTNumFmts.Factory.newInstance();
|
||||
formats.setCount(numberFormats.size());
|
||||
for (Entry<Integer, String> fmt : numberFormats.entrySet()) {
|
||||
CTNumFmt ctFmt = formats.addNewNumFmt();
|
||||
ctFmt.setNumFmtId(fmt.getKey());
|
||||
ctFmt.setFormatCode(fmt.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);
|
||||
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);
|
||||
// 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);
|
||||
// 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);
|
||||
}
|
||||
// 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 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);
|
||||
}
|
||||
// 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, options);
|
||||
}
|
||||
// Save
|
||||
doc.save(out, options);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void commit() throws IOException {
|
||||
PackagePart part = getPackagePart();
|
||||
OutputStream out = part.getOutputStream();
|
||||
writeTo(out);
|
||||
out.close();
|
||||
}
|
||||
@Override
|
||||
protected void commit() throws IOException {
|
||||
PackagePart part = getPackagePart();
|
||||
OutputStream out = part.getOutputStream();
|
||||
writeTo(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
//CTFont ctFont = createDefaultFont();
|
||||
XSSFFont xssfFont = createDefaultFont();
|
||||
fonts.add(xssfFont);
|
||||
private void initialize() {
|
||||
//CTFont ctFont = createDefaultFont();
|
||||
XSSFFont xssfFont = createDefaultFont();
|
||||
fonts.add(xssfFont);
|
||||
|
||||
CTFill[] ctFill = createDefaultFills();
|
||||
fills.add(new XSSFCellFill(ctFill[0]));
|
||||
fills.add(new XSSFCellFill(ctFill[1]));
|
||||
CTFill[] ctFill = createDefaultFills();
|
||||
fills.add(new XSSFCellFill(ctFill[0]));
|
||||
fills.add(new XSSFCellFill(ctFill[1]));
|
||||
|
||||
CTBorder ctBorder = createDefaultBorder();
|
||||
borders.add(new XSSFCellBorder(ctBorder));
|
||||
CTBorder ctBorder = createDefaultBorder();
|
||||
borders.add(new XSSFCellBorder(ctBorder));
|
||||
|
||||
CTXf styleXf = createDefaultXf();
|
||||
styleXfs.add(styleXf);
|
||||
CTXf xf = createDefaultXf();
|
||||
xf.setXfId(0);
|
||||
xfs.add(xf);
|
||||
}
|
||||
CTXf styleXf = createDefaultXf();
|
||||
styleXfs.add(styleXf);
|
||||
CTXf xf = createDefaultXf();
|
||||
xf.setXfId(0);
|
||||
xfs.add(xf);
|
||||
}
|
||||
|
||||
private static CTXf createDefaultXf() {
|
||||
CTXf ctXf = CTXf.Factory.newInstance();
|
||||
ctXf.setNumFmtId(0);
|
||||
ctXf.setFontId(0);
|
||||
ctXf.setFillId(0);
|
||||
ctXf.setBorderId(0);
|
||||
return ctXf;
|
||||
}
|
||||
private static CTBorder createDefaultBorder() {
|
||||
CTBorder ctBorder = CTBorder.Factory.newInstance();
|
||||
ctBorder.addNewBottom();
|
||||
ctBorder.addNewTop();
|
||||
ctBorder.addNewLeft();
|
||||
ctBorder.addNewRight();
|
||||
ctBorder.addNewDiagonal();
|
||||
return ctBorder;
|
||||
}
|
||||
private static CTXf createDefaultXf() {
|
||||
CTXf ctXf = CTXf.Factory.newInstance();
|
||||
ctXf.setNumFmtId(0);
|
||||
ctXf.setFontId(0);
|
||||
ctXf.setFillId(0);
|
||||
ctXf.setBorderId(0);
|
||||
return ctXf;
|
||||
}
|
||||
private static CTBorder createDefaultBorder() {
|
||||
CTBorder ctBorder = CTBorder.Factory.newInstance();
|
||||
ctBorder.addNewBottom();
|
||||
ctBorder.addNewTop();
|
||||
ctBorder.addNewLeft();
|
||||
ctBorder.addNewRight();
|
||||
ctBorder.addNewDiagonal();
|
||||
return ctBorder;
|
||||
}
|
||||
|
||||
|
||||
private static CTFill[] createDefaultFills() {
|
||||
CTFill[] ctFill = new CTFill[]{CTFill.Factory.newInstance(),CTFill.Factory.newInstance()};
|
||||
ctFill[0].addNewPatternFill().setPatternType(STPatternType.NONE);
|
||||
ctFill[1].addNewPatternFill().setPatternType(STPatternType.DARK_GRAY);
|
||||
return ctFill;
|
||||
}
|
||||
private static CTFill[] createDefaultFills() {
|
||||
CTFill[] ctFill = new CTFill[]{CTFill.Factory.newInstance(),CTFill.Factory.newInstance()};
|
||||
ctFill[0].addNewPatternFill().setPatternType(STPatternType.NONE);
|
||||
ctFill[1].addNewPatternFill().setPatternType(STPatternType.DARK_GRAY);
|
||||
return ctFill;
|
||||
}
|
||||
|
||||
private static XSSFFont createDefaultFont() {
|
||||
CTFont ctFont = CTFont.Factory.newInstance();
|
||||
XSSFFont xssfFont=new XSSFFont(ctFont, 0);
|
||||
xssfFont.setFontHeightInPoints(XSSFFont.DEFAULT_FONT_SIZE);
|
||||
xssfFont.setColor(XSSFFont.DEFAULT_FONT_COLOR);//setTheme
|
||||
xssfFont.setFontName(XSSFFont.DEFAULT_FONT_NAME);
|
||||
xssfFont.setFamily(FontFamily.SWISS);
|
||||
xssfFont.setScheme(FontScheme.MINOR);
|
||||
return xssfFont;
|
||||
}
|
||||
private static XSSFFont createDefaultFont() {
|
||||
CTFont ctFont = CTFont.Factory.newInstance();
|
||||
XSSFFont xssfFont=new XSSFFont(ctFont, 0);
|
||||
xssfFont.setFontHeightInPoints(XSSFFont.DEFAULT_FONT_SIZE);
|
||||
xssfFont.setColor(XSSFFont.DEFAULT_FONT_COLOR);//setTheme
|
||||
xssfFont.setFontName(XSSFFont.DEFAULT_FONT_NAME);
|
||||
xssfFont.setFamily(FontFamily.SWISS);
|
||||
xssfFont.setScheme(FontScheme.MINOR);
|
||||
return xssfFont;
|
||||
}
|
||||
|
||||
public CTDxf getDxfAt(int idx) {
|
||||
return dxfs.get(idx);
|
||||
}
|
||||
public CTDxf getDxfAt(int idx) {
|
||||
return dxfs.get(idx);
|
||||
}
|
||||
|
||||
public int putDxf(CTDxf dxf) {
|
||||
this.dxfs.add(dxf);
|
||||
return this.dxfs.size();
|
||||
}
|
||||
public int putDxf(CTDxf dxf) {
|
||||
this.dxfs.add(dxf);
|
||||
return this.dxfs.size();
|
||||
}
|
||||
|
||||
public XSSFCellStyle createCellStyle() {
|
||||
public XSSFCellStyle createCellStyle() {
|
||||
int xfSize = styleXfs.size();
|
||||
if (xfSize > MAXIMUM_STYLE_ID)
|
||||
throw new IllegalStateException("The maximum number of Cell Styles was exceeded. " +
|
||||
"You can define up to " + MAXIMUM_STYLE_ID + " style in a .xlsx Workbook");
|
||||
|
||||
CTXf xf = CTXf.Factory.newInstance();
|
||||
xf.setNumFmtId(0);
|
||||
xf.setFontId(0);
|
||||
xf.setFillId(0);
|
||||
xf.setBorderId(0);
|
||||
xf.setXfId(0);
|
||||
int indexXf = putCellXf(xf);
|
||||
return new XSSFCellStyle(indexXf - 1, xfSize - 1, this, theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds a font that matches the one with the supplied attributes
|
||||
*/
|
||||
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
|
||||
for (XSSFFont font : fonts) {
|
||||
if ( (font.getBoldweight() == boldWeight)
|
||||
&& font.getColor() == color
|
||||
&& font.getFontHeight() == fontHeight
|
||||
&& font.getFontName().equals(name)
|
||||
&& font.getItalic() == italic
|
||||
&& font.getStrikeout() == strikeout
|
||||
&& font.getTypeOffset() == typeOffset
|
||||
&& font.getUnderline() == underline)
|
||||
{
|
||||
return font;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
CTXf xf = CTXf.Factory.newInstance();
|
||||
xf.setNumFmtId(0);
|
||||
xf.setFontId(0);
|
||||
xf.setFillId(0);
|
||||
xf.setBorderId(0);
|
||||
xf.setXfId(0);
|
||||
int indexXf = putCellXf(xf);
|
||||
return new XSSFCellStyle(indexXf - 1, xfSize - 1, this, theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds a font that matches the one with the supplied attributes
|
||||
*/
|
||||
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
|
||||
for (XSSFFont font : fonts) {
|
||||
if ( (font.getBoldweight() == boldWeight)
|
||||
&& font.getColor() == color
|
||||
&& font.getFontHeight() == fontHeight
|
||||
&& font.getFontName().equals(name)
|
||||
&& font.getItalic() == italic
|
||||
&& font.getStrikeout() == strikeout
|
||||
&& font.getTypeOffset() == typeOffset
|
||||
&& font.getUnderline() == underline)
|
||||
{
|
||||
return font;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user