298 lines
9.1 KiB
Java
Executable File
298 lines
9.1 KiB
Java
Executable File
package org.apache.poi.xssf.usermodel;
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
|
|
import junit.framework.TestCase;
|
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
import org.apache.poi.ss.usermodel.CellStyle;
|
|
import org.apache.poi.ss.usermodel.Font;
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
import org.apache.poi.xssf.util.CTFontWrapper;
|
|
import org.apache.poi.xssf.util.Charset;
|
|
import org.apache.poi.xssf.util.IndexedColors;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontName;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontScheme;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontSize;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIntProperty;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTUnderlineProperty;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTVerticalAlignFontProperty;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STUnderlineValues;
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun;
|
|
|
|
public class TestXSSFFont extends TestCase{
|
|
|
|
public void testConstructor(){
|
|
XSSFFont xssfFont=new XSSFFont();
|
|
assertNotNull(xssfFont);
|
|
assertNotNull(xssfFont.getCTFont());
|
|
}
|
|
|
|
|
|
public void testBoldweight(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
|
|
CTBooleanProperty bool=wrapper.getCTFont().addNewB();
|
|
bool.setVal(false);
|
|
wrapper.setB(bool);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(Font.BOLDWEIGHT_NORMAL, xssfFont.getBoldweight());
|
|
|
|
|
|
xssfFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
|
assertEquals(ctFont.getBArray().length,1);
|
|
assertEquals(true, ctFont.getBArray(0).getVal());
|
|
assertEquals(true,wrapper.getB().getVal());
|
|
|
|
}
|
|
|
|
public void testCharSet(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTIntProperty prop=ctFont.addNewCharset();
|
|
prop.setVal(Charset.ANSI_CHARSET);
|
|
|
|
wrapper.setCharset(prop);
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(Font.ANSI_CHARSET,xssfFont.getCharSet());
|
|
|
|
xssfFont.setCharSet(Font.DEFAULT_CHARSET);
|
|
assertEquals(Charset.DEFAULT_CHARSET, wrapper.getCharset().getVal());
|
|
}
|
|
|
|
|
|
public void testFontName(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTFontName fname=ctFont.addNewName();
|
|
fname.setVal("Arial");
|
|
wrapper.setFontName(fname);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals("Arial", xssfFont.getFontName());
|
|
|
|
xssfFont.setFontName("Courier");
|
|
assertEquals("Courier",wrapper.getName().getVal());
|
|
}
|
|
|
|
|
|
public void testItalic(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
|
|
CTBooleanProperty bool=wrapper.getCTFont().addNewI();
|
|
bool.setVal(false);
|
|
wrapper.setI(bool);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(false, xssfFont.getItalic());
|
|
|
|
xssfFont.setItalic(true);
|
|
assertEquals(ctFont.getIArray().length,1);
|
|
assertEquals(true, ctFont.getIArray(0).getVal());
|
|
assertEquals(true,wrapper.getI().getVal());
|
|
}
|
|
|
|
|
|
public void testStrikeout(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
|
|
CTBooleanProperty bool=wrapper.getCTFont().addNewStrike();
|
|
bool.setVal(false);
|
|
wrapper.setStrike(bool);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(false, xssfFont.getStrikeout());
|
|
|
|
xssfFont.setStrikeout(true);
|
|
assertEquals(ctFont.getStrikeArray().length,1);
|
|
assertEquals(true, ctFont.getStrikeArray(0).getVal());
|
|
assertEquals(true,wrapper.getStrike().getVal());
|
|
}
|
|
|
|
|
|
public void testFontHeight(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTFontSize size=ctFont.addNewSz();
|
|
size.setVal(11);
|
|
wrapper.setSz(size);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(11/20,xssfFont.getFontHeight());
|
|
|
|
xssfFont.setFontHeight((short)20);
|
|
assertEquals(new Double(20*20).doubleValue(),wrapper.getSz().getVal()); }
|
|
|
|
|
|
public void testFontHeightInPoint(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTFontSize size=ctFont.addNewSz();
|
|
size.setVal(14);
|
|
wrapper.setSz(size);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(14,xssfFont.getFontHeightInPoints());
|
|
|
|
xssfFont.setFontHeightInPoints((short)20);
|
|
assertEquals(new Double(20).doubleValue(),wrapper.getSz().getVal());
|
|
}
|
|
|
|
|
|
public void testUnderline(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
|
|
CTUnderlineProperty underlinePropr=wrapper.getCTFont().addNewU();
|
|
underlinePropr.setVal(STUnderlineValues.SINGLE);
|
|
wrapper.setU(underlinePropr);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(Font.U_SINGLE, xssfFont.getUnderline());
|
|
|
|
xssfFont.setUnderline(Font.U_DOUBLE);
|
|
assertEquals(ctFont.getUArray().length,1);
|
|
assertEquals(STUnderlineValues.DOUBLE,wrapper.getU().getVal());
|
|
}
|
|
|
|
public void testColor(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTColor color=ctFont.addNewColor();
|
|
//color.setIndexed(IndexedColors.DEFAULT_COLOR);
|
|
color.setIndexed(XSSFFont.DEFAULT_FONT_COLOR);
|
|
wrapper.setColor(color);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(Font.COLOR_NORMAL,xssfFont.getColor());
|
|
|
|
xssfFont.setColor(Font.COLOR_RED);
|
|
assertEquals(IndexedColors.RED,wrapper.getColor().getIndexed());
|
|
}
|
|
|
|
|
|
public void testFamily(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTIntProperty family=ctFont.addNewFamily();
|
|
family.setVal(XSSFFont.FONT_FAMILY_MODERN);
|
|
wrapper.setFamily(family);
|
|
|
|
XSSFFont xssfFont=new XSSFFont(ctFont);
|
|
assertEquals(XSSFFont.FONT_FAMILY_MODERN,xssfFont.getFamily());
|
|
|
|
}
|
|
|
|
|
|
public void testScheme(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTFontScheme scheme=ctFont.addNewScheme();
|
|
scheme.setVal(STFontScheme.MAJOR);
|
|
wrapper.setFontScheme(scheme);
|
|
|
|
XSSFFont font=new XSSFFont(ctFont);
|
|
assertEquals(XSSFFont.SCHEME_MAJOR,font.getScheme());
|
|
|
|
font.setScheme(XSSFFont.SCHEME_NONE);
|
|
assertEquals(STFontScheme.NONE,wrapper.getFontScheme().getVal());
|
|
}
|
|
|
|
public void testTypeOffset(){
|
|
CTFont ctFont=CTFont.Factory.newInstance();
|
|
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
|
|
CTVerticalAlignFontProperty valign=ctFont.addNewVertAlign();
|
|
valign.setVal(STVerticalAlignRun.BASELINE);
|
|
wrapper.setVertAlign(valign);
|
|
|
|
XSSFFont font=new XSSFFont(ctFont);
|
|
assertEquals(Font.SS_NONE,font.getTypeOffset());
|
|
|
|
font.setTypeOffset(XSSFFont.SS_SUPER);
|
|
assertEquals(STVerticalAlignRun.SUPERSCRIPT,wrapper.getVertAlign().getVal());
|
|
}
|
|
|
|
|
|
public void testXSSFFont() throws IOException{
|
|
XSSFWorkbook workbook=new XSSFWorkbook();
|
|
//Font font1=workbook.createFont();
|
|
|
|
Sheet sheet=workbook.createSheet("sheet 1 - test font");
|
|
|
|
|
|
Row row=sheet.createRow(0);
|
|
Cell cell=row.createCell(0);
|
|
cell.setCellValue(new XSSFRichTextString("XSSFFont test example file"));
|
|
Font font=new XSSFFont();
|
|
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
|
font.setFontHeightInPoints((short)22);
|
|
font.setColor((short)IndexedColors.BLUE);
|
|
font.setFontName("Verdana");
|
|
CellStyle cellStyleTitle=workbook.createCellStyle();
|
|
cellStyleTitle.setFont(font);
|
|
cell.setCellStyle(cellStyleTitle);
|
|
|
|
|
|
row=sheet.createRow(3);
|
|
Font font1=new XSSFFont();
|
|
font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
|
font1.setItalic(true);
|
|
font1.setFontHeightInPoints((short)18);
|
|
font1.setColor(Font.COLOR_RED);
|
|
font1.setFontName("Arial");
|
|
CellStyle cellStyle1=workbook.createCellStyle();
|
|
cellStyle1.setFont(font1);
|
|
|
|
Cell cell1=row.createCell(0);
|
|
cell1.setCellValue(new XSSFRichTextString("red bold 18pt italic Arial"));
|
|
cell1.setCellStyle(cellStyle1);
|
|
|
|
|
|
row=sheet.createRow(4);
|
|
Font font2=new XSSFFont();
|
|
font2.setFontHeight((short)1);
|
|
font2.setFontName("Courier");
|
|
font2.setColor(Font.COLOR_NORMAL);
|
|
font2.setUnderline(Font.U_DOUBLE);
|
|
CellStyle cellStyle2=workbook.createCellStyle();
|
|
cellStyle2.setFont(font2);
|
|
|
|
Cell cell2=row.createCell(0);
|
|
cell2.setCellValue(new XSSFRichTextString("Something in courier underlined"));
|
|
cell2.setCellStyle(cellStyle2);
|
|
|
|
|
|
row=sheet.createRow(5);
|
|
cell1=row.createCell(0);
|
|
Font font3=new XSSFFont();
|
|
font3.setFontHeightInPoints((short)9);
|
|
font3.setFontName("Times");
|
|
font3.setStrikeout(true);
|
|
font3.setColor((short)IndexedColors.PINK);
|
|
CellStyle cellStyle3=workbook.createCellStyle();
|
|
cellStyle3.setFont(font3);
|
|
|
|
cell1.setCellValue(new XSSFRichTextString("pink italic Times 9pt strikeout!!!"));
|
|
cell1.setCellStyle(cellStyle3);
|
|
|
|
File tmpFile = new File("test-ooxml-font.xlsx");
|
|
if(tmpFile.exists()) tmpFile.delete();
|
|
FileOutputStream out = new FileOutputStream(tmpFile);
|
|
workbook.write(out);
|
|
out.close();
|
|
}
|
|
|
|
|
|
}
|