From 5d1f44e314d2ecbe4b2a72d90a2396da1b704c74 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 6 Jan 2009 20:49:02 +0000 Subject: [PATCH] Support for reading HSSF column styles git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@732112 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/hssf/usermodel/HSSFSheet.java | 18 ++++++++ .../org/apache/poi/ss/usermodel/Sheet.java | 13 ++++++ .../apache/poi/xssf/usermodel/XSSFSheet.java | 11 +++++ .../apache/poi/hssf/data/ColumnStyle1dp.xls | Bin 0 -> 18432 bytes .../poi/hssf/data/ColumnStyle1dpColoured.xls | Bin 0 -> 18432 bytes .../apache/poi/hssf/data/ColumnStyleNone.xls | Bin 0 -> 17408 bytes .../poi/hssf/usermodel/TestHSSFSheet.java | 39 ++++++++++++++++++ 9 files changed, 83 insertions(+) create mode 100755 src/testcases/org/apache/poi/hssf/data/ColumnStyle1dp.xls create mode 100755 src/testcases/org/apache/poi/hssf/data/ColumnStyle1dpColoured.xls create mode 100755 src/testcases/org/apache/poi/hssf/data/ColumnStyleNone.xls diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 410abba48a..139b48f9a0 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + Support for reading HSSF column styles Hook up POIXMLTextExtractor.getMetadataTextExtractor() to the already written POIXMLPropertiesTextExtractor 46472 - Avoid NPE in HPSFPropertiesExtractor when no properties exist 46479 - fixed bugs related to cached formula values and HSSFFormulaEvaluator.evaluateInCell() diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index e9e6761cb2..1af660ed72 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + Support for reading HSSF column styles Hook up POIXMLTextExtractor.getMetadataTextExtractor() to the already written POIXMLPropertiesTextExtractor 46472 - Avoid NPE in HPSFPropertiesExtractor when no properties exist 46479 - fixed bugs related to cached formula values and HSSFFormulaEvaluator.evaluateInCell() diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 9ed29e00f5..30556bd554 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -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. diff --git a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java index 9650db2009..a6a1662c53 100644 --- a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java +++ b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java @@ -177,6 +177,19 @@ public interface Sheet extends Iterable { * @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) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index c8de77972d..10391170a1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -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, diff --git a/src/testcases/org/apache/poi/hssf/data/ColumnStyle1dp.xls b/src/testcases/org/apache/poi/hssf/data/ColumnStyle1dp.xls new file mode 100755 index 0000000000000000000000000000000000000000..1318b0fa5dbe1253f324ecc578e653144120d1fc GIT binary patch literal 18432 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 bmIA>36S)2_1;m!8T>iGAZ_49ang9O*6so;d literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/ColumnStyle1dpColoured.xls b/src/testcases/org/apache/poi/hssf/data/ColumnStyle1dpColoured.xls new file mode 100755 index 0000000000000000000000000000000000000000..25dd8de6ded50181b457842d62a2e573a11901ae GIT binary patch literal 18432 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 Ms#oRmoy`A#0nWa^xc~qF literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/ColumnStyleNone.xls b/src/testcases/org/apache/poi/hssf/data/ColumnStyleNone.xls new file mode 100755 index 0000000000000000000000000000000000000000..3f0128aad41fbde6c5a344741a3916ef7ad407fe GIT binary patch literal 17408 zcmeHOYiwM_6+U-&ZLgCM+lgZWB=(Y!w;d9%6O!iPJa`J{Arb@>Q0mybu^Y#BH)|TC zq%pKrtCChUDM1ZsA*D#PrLRC=Ds4l55LH@e)k1j`DyT@+ms*k12ME}H-^||Kd*?p9 zTR<%+W6kxQbI*L|%$YOi&diM6N@I3rGXr8D+#$o2Jt^5H=}3DPfhR` z+b9uKOT>8^S!g}-jq_A6k8w9<)`tn}l4Fa&filE1&j?7Xo>09HY3pO1|3iSj{7d=GA!kqD16du}5$f`5p2NGRzpT zvA<_$V%>qqTb6-?@2P7eYZTw7)pdrtPQ=xc@2NV^D#~JMmgm49m)mKfh#ar6*25D9;0fE| zA^r0I#L)-eTP6?F2t`eI74+;@nzs6IxZ4sNljAwq$duy7pv4--v{>Vq94p7PnWE+LgPbf{cwP{^S#lq7WZ8Pv}Ticp#ZOyS(nJ05tvBY+R)o{eZHe` zxVmxMNBap^Ig0+dhK4)G-#K1lhZR3pJ(`|Q|D@$7EfV{lqE{h;DEhy_ppxyM^8)Ct z0rdI4bgr@#z7bEjLR0jj|7(A)vFT69X53=YrS;*;PVs9xny=|x?G@+=+@kpg-H^-G zpyDsuNBcilh6S7t;1&x&jl&hBq8Ii2TET7w`q74lrtwX%^ASboO4G*IcGmWn*4j?jk1>pDyG%48}U{kOGOp*#I6DfT!vI6fop+^Dlnv0RDpd`Q3X0}MHSd76;+^{S5$%H ztD*`FC>2%U$f&3Shh9Y$IF>4^z~EO=g$0#XXsxtDTcs5iR$AeGl~!2cs=)E*3t?+gb?mIKnBbc2{dumd0^FYz?Tt2)*K zh4wSLAs*+Q28+bdem;2gZ;$7L+dtO@a#X7QLGmZVKrV8FqyjX_|M{pxlg}F6xdb3J zsynH5XXi};n&duT1gR-BasU4Pd3G-oyPW_|TCIbIM=Fi;q3w&CN-YPkQ>jjWrB0td z?NO?;v(uxLlV&SLT0ti)b+z(NnpdfLE~Q@E7hrBbrJPoIYnC!c<5DQ4M^0sV#v1RmsCSRAn@4owrAhr)UO=}Bt(#kitIWSj24LvZ~GW3<(2fVGo+PUB~ zY=vh!V-L)HKIdu0@#DumPUEE6tso89D%nosq8ObG-9zvh_1-yA(N%K_0Jm4a=;#Z*a?K$~#l84SYjO=E)Oy23&DL9+ycg1=3| zK`tloq zZNlY4FbKa#jtP?M3J1aZ(E);jzfHnHW|sq^Kf(q#hYQ;=o0Cd&g%k|J@3UiqGuP`ipudj)v z(!V+Na=wc995I*$%;Mez#Wa{=+Pz|Cgox2=5GAH6l|KFabN*r`nPQS&F|$L&=v9gm zQ=Llx>E-AB#Y{HEba=(g4-vz4Ocb*o7^)_fKJ~(1{KYhyVwQNtEDRCDv|QKkfAD>OF;h)3KAtuwM2yqZa$Qfo^sv8}b4)Qlp0*%FjMLL{UAYs_`inW& z6yxJ*7lw#&dRngQyU+i@U(9)?7#~kdhKO-`TCVH$Cm-?`GmT=FhI?89VwRTSY3<27 z9(+oRVL(GF#YA_UQhys|Cpe& z3{a=fh}`wV>-<4yl|bPwCg?l^)afB2qrG492c2C4g>RUkZ3d{*A4INv;8B0jIVDhd zf(g3V0Co1h$iEI>>IWK^xp=$Ey6)bC@#XHGx6aE)WgWH~dy8-2DsGBkhmf-)-g6tV z5J~EB_5geM>$?YfMh3dG{X>HXsJXhVjpa!1_8 zf-oCvBF=eX1#x+*ySIOEM*?dFL(ynGEPFW=qVM-Z(H&4wuMw0BV8FCou}{O%6>FfG z4uppy6S2r}fFt&q;0-?DI{pQK=R5B|@mn;6;7KPqVxS2=$p>7=!2obQHHawi4ktKb zp%DGESDDBjt+0;SspPh`Y-ojc5-~jt;{Y+3BT$mdC!o-D&(d z@D_)EJtjzqOI`hgJ5#-d@qeYE%v8jsF4fUH(doUe2oNoLV=)%l(T7{y)iB%yxd{5p z#?(kQ(~abn9vfL~ewq zXVd{)LKUoU;kL9`t;NAEKx`b!rVhrpyD=i;FkXm}g;LyW7$FJ{oJY&5BaCHl386UCY$oQGfpDlSEZv?V2!z;J+?;0LRAwp$8JcMG; z(7?#9K@5;AUR3vHc5P2(cEcrxvVEyc9`lE|Jcv)}=mP19HzDJu zkeUkrBXSt39d=ZP`|(+udd4=er*%EPKfrnM zG4+gk*Kr;%M4`rYjQ*-bUF#Gr3LEk_0d=zA6HU)Ne%W=ZF7>YC5K-LJxQ=f#A$MGH zztlMWXQxhHyXGnUPALNw@4@eqreV2sY3j3HE=irT)tiVcP(w z^w4gY>hp4>;Z0rf9x1kr}mbIrz<4RIk`y)?2_Tk$LcU0GT>xk=gFO$edSy44L*gfXudk2ia*4+LB4PVS>V9 znV3xG|7HjwFZ)9;M@qNtrQ4)T03!v_=mfcDD6?}n*Dt$O{Yq^HgkrJ~8KMXf92w?s ze`kZM)Nh;8>HeOS?!H9(qD9F>Q4JMw*7c{;%P{-m)*E_wp=!~>W%A1M;~y%DJ9G0k rTfi#pxejADW4nB?Vs!oj*BKSd0pR$_l*3piPo?t9ge{xx-7Nn<0Sa6$ literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index 4757223354..c119daa283 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -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()); + } } -- 2.39.5