git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@732112 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_5_BETA5
@@ -37,6 +37,7 @@ | |||
<!-- Don't forget to update status.xml too! --> | |||
<release version="3.5-beta5" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="add">Support for reading HSSF column styles</action> | |||
<action dev="POI-DEVELOPERS" type="fix">Hook up POIXMLTextExtractor.getMetadataTextExtractor() to the already written POIXMLPropertiesTextExtractor</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46472 - Avoid NPE in HPSFPropertiesExtractor when no properties exist</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46479 - fixed bugs related to cached formula values and HSSFFormulaEvaluator.evaluateInCell()</action> |
@@ -34,6 +34,7 @@ | |||
<!-- Don't forget to update changes.xml too! --> | |||
<changes> | |||
<release version="3.5-beta5" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="add">Support for reading HSSF column styles</action> | |||
<action dev="POI-DEVELOPERS" type="fix">Hook up POIXMLTextExtractor.getMetadataTextExtractor() to the already written POIXMLPropertiesTextExtractor</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46472 - Avoid NPE in HPSFPropertiesExtractor when no properties exist</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46479 - fixed bugs related to cached formula values and HSSFFormulaEvaluator.evaluateInCell()</action> |
@@ -36,6 +36,7 @@ import org.apache.poi.hssf.model.Workbook; | |||
import org.apache.poi.hssf.record.CellValueRecordInterface; | |||
import org.apache.poi.hssf.record.DVRecord; | |||
import org.apache.poi.hssf.record.EscherAggregate; | |||
import org.apache.poi.hssf.record.ExtendedFormatRecord; | |||
import org.apache.poi.hssf.record.Record; | |||
import org.apache.poi.hssf.record.RowRecord; | |||
import org.apache.poi.hssf.record.SCLRecord; | |||
@@ -502,6 +503,23 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { | |||
{ | |||
sheet.setDefaultRowHeight((short) (height * 20)); | |||
} | |||
/** | |||
* Returns the HSSFCellStyle that applies to the given | |||
* (0 based) column, or null if no style has been | |||
* set for that column | |||
*/ | |||
public HSSFCellStyle getColumnStyle(int column) { | |||
short styleIndex = sheet.getXFIndexForColAt((short)column); | |||
if(styleIndex == 0xf) { | |||
// None set | |||
return null; | |||
} | |||
ExtendedFormatRecord xf = book.getExFormatAt(styleIndex); | |||
return new HSSFCellStyle(styleIndex, xf, book); | |||
} | |||
/** | |||
* get whether gridlines are printed. |
@@ -177,6 +177,19 @@ public interface Sheet extends Iterable<Row> { | |||
* @param height default row height | |||
*/ | |||
void setDefaultRowHeightInPoints(float height); | |||
/** | |||
* Returns the CellStyle that applies to the given | |||
* (0 based) column, or null if no style has been | |||
* set for that column | |||
*/ | |||
public CellStyle getColumnStyle(int column); | |||
/** | |||
* Sets the CellStyle that applies to the given | |||
* (0 based) column. | |||
*/ | |||
// public CellStyle setColumnStyle(int column, CellStyle style); | |||
/** | |||
* Adds a merged region of cells (hence those cells form one) |
@@ -500,6 +500,17 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { | |||
worksheet.getSheetFormatPr() : | |||
worksheet.addNewSheetFormatPr(); | |||
} | |||
/** | |||
* Returns the CellStyle that applies to the given | |||
* (0 based) column, or null if no style has been | |||
* set for that column | |||
*/ | |||
public CellStyle getColumnStyle(int column) { | |||
// TODO | |||
return null; | |||
} | |||
/** | |||
* Get whether to display the guts or not, |
@@ -911,4 +911,43 @@ public final class TestHSSFSheet extends TestCase { | |||
} | |||
wb.createSheet(SAME_PREFIX + "Exxxx"); // OK - differs in the 31st char | |||
} | |||
/** | |||
* Tests that we can read existing column styles | |||
*/ | |||
public void testReadColumnStyles() { | |||
HSSFWorkbook wbNone = HSSFTestDataSamples.openSampleWorkbook("ColumnStyleNone.xls"); | |||
HSSFWorkbook wbSimple = HSSFTestDataSamples.openSampleWorkbook("ColumnStyle1dp.xls"); | |||
HSSFWorkbook wbComplex = HSSFTestDataSamples.openSampleWorkbook("ColumnStyle1dpColoured.xls"); | |||
// Presence / absence checks | |||
assertNull(wbNone.getSheetAt(0).getColumnStyle(0)); | |||
assertNull(wbNone.getSheetAt(0).getColumnStyle(1)); | |||
assertNull(wbSimple.getSheetAt(0).getColumnStyle(0)); | |||
assertNotNull(wbSimple.getSheetAt(0).getColumnStyle(1)); | |||
assertNull(wbComplex.getSheetAt(0).getColumnStyle(0)); | |||
assertNotNull(wbComplex.getSheetAt(0).getColumnStyle(1)); | |||
// Details checks | |||
HSSFCellStyle bs = wbSimple.getSheetAt(0).getColumnStyle(1); | |||
assertEquals(62, bs.getIndex()); | |||
assertEquals("#,##0.0_ ;\\-#,##0.0\\ ", bs.getDataFormatString()); | |||
assertEquals("Calibri", bs.getFont(wbSimple).getFontName()); | |||
assertEquals(11*20, bs.getFont(wbSimple).getFontHeight()); | |||
assertEquals(8, bs.getFont(wbSimple).getColor()); | |||
assertFalse(bs.getFont(wbSimple).getItalic()); | |||
assertEquals(HSSFFont.BOLDWEIGHT_NORMAL, bs.getFont(wbSimple).getBoldweight()); | |||
HSSFCellStyle cs = wbComplex.getSheetAt(0).getColumnStyle(1); | |||
assertEquals(62, cs.getIndex()); | |||
assertEquals("#,##0.0_ ;\\-#,##0.0\\ ", cs.getDataFormatString()); | |||
assertEquals("Arial", cs.getFont(wbComplex).getFontName()); | |||
assertEquals(8*20, cs.getFont(wbComplex).getFontHeight()); | |||
assertEquals(10, cs.getFont(wbComplex).getColor()); | |||
assertFalse(cs.getFont(wbComplex).getItalic()); | |||
assertEquals(HSSFFont.BOLDWEIGHT_BOLD, cs.getFont(wbComplex).getBoldweight()); | |||
} | |||
} |