import java.io.IOException;
+import org.apache.poi.common.usermodel.fonts.FontCharset;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ss.usermodel.BaseTestFont;
import org.apache.poi.ss.usermodel.Font;
-import org.apache.poi.ss.usermodel.FontCharset;
import org.apache.poi.ss.usermodel.FontFamily;
import org.apache.poi.ss.usermodel.FontScheme;
import org.apache.poi.ss.usermodel.FontUnderline;
@SuppressWarnings("deprecation")
@Test
- public void testCharSet() throws IOException {
+ public void testCharSetWithDeprecatedFontCharset() throws IOException {
CTFont ctFont=CTFont.Factory.newInstance();
CTIntProperty prop=ctFont.addNewCharset();
- prop.setVal(FontCharset.ANSI.getValue());
+ prop.setVal(org.apache.poi.ss.usermodel.FontCharset.ANSI.getValue());
ctFont.setCharsetArray(0,prop);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(Font.ANSI_CHARSET,xssfFont.getCharSet());
- xssfFont.setCharSet(FontCharset.DEFAULT);
- assertEquals(FontCharset.DEFAULT.getValue(),ctFont.getCharsetArray(0).getVal());
+ xssfFont.setCharSet(org.apache.poi.ss.usermodel.FontCharset.DEFAULT);
+ assertEquals(org.apache.poi.ss.usermodel.FontCharset.DEFAULT.getValue(),ctFont.getCharsetArray(0).getVal());
// Try with a few less usual ones:
// Set with the Charset itself
- xssfFont.setCharSet(FontCharset.RUSSIAN);
- assertEquals(FontCharset.RUSSIAN.getValue(), xssfFont.getCharSet());
+ xssfFont.setCharSet(org.apache.poi.ss.usermodel.FontCharset.RUSSIAN);
+ assertEquals(org.apache.poi.ss.usermodel.FontCharset.RUSSIAN.getValue(), xssfFont.getCharSet());
// And set with the Charset index
- xssfFont.setCharSet(FontCharset.ARABIC.getValue());
- assertEquals(FontCharset.ARABIC.getValue(), xssfFont.getCharSet());
- xssfFont.setCharSet((byte)(FontCharset.ARABIC.getValue()));
- assertEquals(FontCharset.ARABIC.getValue(), xssfFont.getCharSet());
+ xssfFont.setCharSet(org.apache.poi.ss.usermodel.FontCharset.ARABIC.getValue());
+ assertEquals(org.apache.poi.ss.usermodel.FontCharset.ARABIC.getValue(), xssfFont.getCharSet());
+ xssfFont.setCharSet((byte)(org.apache.poi.ss.usermodel.FontCharset.ARABIC.getValue()));
+ assertEquals(org.apache.poi.ss.usermodel.FontCharset.ARABIC.getValue(), xssfFont.getCharSet());
// This one isn't allowed
- assertNull(FontCharset.valueOf(9999));
+ assertNull(org.apache.poi.ss.usermodel.FontCharset.valueOf(9999));
try {
xssfFont.setCharSet(9999);
fail("Shouldn't be able to set an invalid charset");
wb2.close();
}
+ @Test
+ public void testCharSet() throws IOException {
+ CTFont ctFont=CTFont.Factory.newInstance();
+ CTIntProperty prop=ctFont.addNewCharset();
+ prop.setVal(FontCharset.ANSI.getNativeId());
+
+ ctFont.setCharsetArray(0,prop);
+ XSSFFont xssfFont=new XSSFFont(ctFont);
+ assertEquals(Font.ANSI_CHARSET,xssfFont.getCharSet());
+
+ xssfFont.setCharSet(FontCharset.DEFAULT);
+ assertEquals(FontCharset.DEFAULT.getNativeId(),ctFont.getCharsetArray(0).getVal());
+
+ // Try with a few less usual ones:
+ // Set with the Charset itself
+ xssfFont.setCharSet(FontCharset.RUSSIAN);
+ assertEquals(FontCharset.RUSSIAN.getNativeId(), xssfFont.getCharSet());
+ // And set with the Charset index
+ xssfFont.setCharSet(FontCharset.ARABIC.getNativeId());
+ assertEquals(FontCharset.ARABIC.getNativeId(), xssfFont.getCharSet());
+ xssfFont.setCharSet((byte)(FontCharset.ARABIC.getNativeId()));
+ assertEquals(FontCharset.ARABIC.getNativeId(), xssfFont.getCharSet());
+
+ // This one isn't allowed
+ assertNull(FontCharset.valueOf(9999));
+ try {
+ xssfFont.setCharSet(9999);
+ fail("Shouldn't be able to set an invalid charset");
+ } catch(POIXMLException e) {
+ // expected here
+ }
+
+ // Now try with a few sample files
+
+ // Normal charset
+ XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
+ assertEquals(0,
+ wb1.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
+ );
+ wb1.close();
+
+ // GB2312 charset
+ XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("49273.xlsx");
+ assertEquals(134,
+ wb2.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
+ );
+ wb2.close();
+ }
+
@Test
public void testFontName() {
CTFont ctFont=CTFont.Factory.newInstance();