📄 sheetwriter.java
字号:
cf1.setBorder(Border.RIGHT,
tlformat.getBorderLine(Border.RIGHT),
tlformat.getBorderColour(Border.RIGHT));
}
int index = borderFormats.indexOf(cf1);
if (index != -1)
{
cf1 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf1);
}
( (WritableCell) topLeft).setCellFormat(cf1);
// Handle the bottom left corner
if (bottomRight.getRow() > topLeft.getRow())
{
// Handle the corner cell
if (bottomRight.getColumn() != topLeft.getColumn())
{
CellXFRecord cf2 = new CellXFRecord(tlformat);
cf2.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf2.setBorder(Border.LEFT,
tlformat.getBorderLine(Border.LEFT),
tlformat.getBorderColour(Border.LEFT));
cf2.setBorder(Border.BOTTOM,
tlformat.getBorderLine(Border.BOTTOM),
tlformat.getBorderColour(Border.BOTTOM));
index = borderFormats.indexOf(cf2);
if (index != -1)
{
cf2 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf2);
}
sheet.addCell(new Blank(topLeft.getColumn(),
bottomRight.getRow(), cf2));
}
// Handle the cells down the left hand side (and along the
// right too, if necessary)
for (int i = topLeft.getRow() + 1; i < bottomRight.getRow() ;i++)
{
CellXFRecord cf3 = new CellXFRecord(tlformat);
cf3.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf3.setBorder(Border.LEFT,
tlformat.getBorderLine(Border.LEFT),
tlformat.getBorderColour(Border.LEFT));
if (topLeft.getColumn() == bottomRight.getColumn())
{
cf3.setBorder(Border.RIGHT,
tlformat.getBorderLine(Border.RIGHT),
tlformat.getBorderColour(Border.RIGHT));
}
index = borderFormats.indexOf(cf3);
if (index != -1)
{
cf3 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf3);
}
sheet.addCell(new Blank(topLeft.getColumn(), i, cf3));
}
}
// Handle the top right corner
if (bottomRight.getColumn() > topLeft.getColumn())
{
if (bottomRight.getRow() != topLeft.getRow())
{
// Handle the corner cell
CellXFRecord cf6 = new CellXFRecord(tlformat);
cf6.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf6.setBorder(Border.RIGHT,
tlformat.getBorderLine(Border.RIGHT),
tlformat.getBorderColour(Border.RIGHT));
cf6.setBorder(Border.TOP,
tlformat.getBorderLine(Border.TOP),
tlformat.getBorderColour(Border.TOP));
index = borderFormats.indexOf(cf6);
if (index != -1)
{
cf6 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf6);
}
sheet.addCell(new Blank(bottomRight.getColumn(),
topLeft.getRow(), cf6));
}
// Handle the cells along the right
for (int i = topLeft.getRow() + 1;
i < bottomRight.getRow() ;i++)
{
CellXFRecord cf7 = new CellXFRecord(tlformat);
cf7.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf7.setBorder(Border.RIGHT,
tlformat.getBorderLine(Border.RIGHT),
tlformat.getBorderColour(Border.RIGHT));
index = borderFormats.indexOf(cf7);
if (index != -1)
{
cf7 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf7);
}
sheet.addCell(new Blank(bottomRight.getColumn(), i, cf7));
}
// Handle the cells along the top, and along the bottom too
for (int i = topLeft.getColumn() + 1;
i < bottomRight.getColumn() ;i++)
{
CellXFRecord cf8 = new CellXFRecord(tlformat);
cf8.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf8.setBorder(Border.TOP,
tlformat.getBorderLine(Border.TOP),
tlformat.getBorderColour(Border.TOP));
if (topLeft.getRow() == bottomRight.getRow())
{
cf8.setBorder(Border.BOTTOM,
tlformat.getBorderLine(Border.BOTTOM),
tlformat.getBorderColour(Border.BOTTOM));
}
index = borderFormats.indexOf(cf8);
if (index != -1)
{
cf8 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf8);
}
sheet.addCell(new Blank(i, topLeft.getRow(), cf8));
}
}
// Handle the bottom right corner
if (bottomRight.getColumn() > topLeft.getColumn() ||
bottomRight.getRow() > topLeft.getRow())
{
// Handle the corner cell
CellXFRecord cf4 = new CellXFRecord(tlformat);
cf4.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf4.setBorder(Border.RIGHT,
tlformat.getBorderLine(Border.RIGHT),
tlformat.getBorderColour(Border.RIGHT));
cf4.setBorder(Border.BOTTOM,
tlformat.getBorderLine(Border.BOTTOM),
tlformat.getBorderColour(Border.BOTTOM));
if (bottomRight.getRow() == topLeft.getRow())
{
cf4.setBorder(Border.TOP,
tlformat.getBorderLine(Border.TOP),
tlformat.getBorderColour(Border.TOP));
}
if (bottomRight.getColumn() == topLeft.getColumn())
{
cf4.setBorder(Border.LEFT,
tlformat.getBorderLine(Border.LEFT),
tlformat.getBorderColour(Border.LEFT));
}
index = borderFormats.indexOf(cf4);
if (index != -1)
{
cf4 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf4);
}
sheet.addCell(new Blank(bottomRight.getColumn(),
bottomRight.getRow(), cf4));
// Handle the cells along the bottom (and along the top
// as well, if appropriate)
for (int i = topLeft.getColumn() + 1;
i < bottomRight.getColumn() ;i++)
{
CellXFRecord cf5 = new CellXFRecord(tlformat);
cf5.setBorder(Border.ALL, BorderLineStyle.NONE, Colour.BLACK);
cf5.setBorder(Border.BOTTOM,
tlformat.getBorderLine(Border.BOTTOM),
tlformat.getBorderColour(Border.BOTTOM));
if (topLeft.getRow() == bottomRight.getRow())
{
cf5.setBorder(Border.TOP,
tlformat.getBorderLine(Border.TOP),
tlformat.getBorderColour(Border.TOP));
}
index = borderFormats.indexOf(cf5);
if (index != -1)
{
cf5 = (CellXFRecord) borderFormats.get(index);
}
else
{
borderFormats.add(cf5);
}
sheet.addCell(new Blank(i, bottomRight.getRow(), cf5));
}
}
}
catch (WriteException e)
{
// just log e.toString(), not the whole stack trace
logger.warn(e.toString());
}
}
}
}
/**
* Get the cells in the column. Don't use the interface method
* getColumn for this as this will create loads of empty cells,
* and we could do without that overhead
*/
private Cell[] getColumn(int col)
{
// Find the last non-null cell
boolean found = false;
int row = numRows - 1;
while (row >= 0 && !found)
{
if (rows[row] != null &&
rows[row].getCell(col) != null)
{
found = true;
}
else
{
row--;
}
}
// Only create entries for non-empty cells
Cell[] cells = new Cell[row+1];
for (int i = 0; i <= row; i++)
{
cells[i] = rows[i] != null ? rows[i].getCell(col) : null;
}
return cells;
}
/**
* Sets a flag to indicate that this sheet contains a chart only
*/
void setChartOnly()
{
chartOnly = true;
}
/**
* Sets the environment specific print record
*
* @param pls the print record
*/
void setPLS(PLSRecord pls)
{
plsRecord = pls;
}
/**
* Sets the button property set record
*
* @param bps the button property set
*/
void setButtonPropertySet(ButtonPropertySetRecord bps)
{
buttonPropertySet = bps;
}
/**
* Sets the data validations
*
* @param dv the read-in list of data validations
* @param vc the api manipulated set of data validations
*/
void setDataValidation(DataValidation dv, ArrayList vc)
{
dataValidation = dv;
validatedCells = vc;
}
/**
* Sets the conditional formats
*
* @param cf the conditonal formats
*/
void setConditionalFormats(ArrayList cf)
{
conditionalFormats = cf;
}
/**
* Sets the auto filter
*
* @param af the autofilter
*/
void setAutoFilter(AutoFilter af)
{
autoFilter = af;
}
/**
* Writes out the data validations
*/
private void writeDataValidation() throws IOException
{
if (dataValidation != null && validatedCells.size() == 0)
{
// only data validations are those read in
dataValidation.write(outputFile);
return;
}
if (dataValidation == null && validatedCells.size() > 0)
{
int comboBoxId = sheet.getComboBox() != null ?
sheet.getComboBox().getObjectId() : DataValidation.DEFAULT_OBJECT_ID;
dataValidation = new DataValidation(comboBoxId,
sheet.getWorkbook(),
sheet.getWorkbook(),
workbookSettings);
for (Iterator i = validatedCells.iterator(); i.hasNext(); )
{
CellValue cv = (CellValue) i.next();
CellFeatures cf = cv.getCellFeatures();
DataValiditySettingsRecord dvsr =
new DataValiditySettingsRecord(cf.getDVParser());
dataValidation.add(dvsr);
}
dataValidation.write(outputFile);
return;
}
// Read and write validations
for (Iterator i = validatedCells.iterator(); i.hasNext(); )
{
CellValue cv = (CellValue) i.next();
CellFeatures cf = cv.getCellFeatures();
DataValiditySettingsRecord dvsr =
new DataValiditySettingsRecord(cf.getDVParser());
dataValidation.add(dvsr);
}
dataValidation.write(outputFile);
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -