You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestXSSFSheet.java 59KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437
  1. /* ====================================================================
  2. Licensed to the Apache Software Foundation (ASF) under one or more
  3. contributor license agreements. See the NOTICE file distributed with
  4. this work for additional information regarding copyright ownership.
  5. The ASF licenses this file to You under the Apache License, Version 2.0
  6. (the "License"); you may not use this file except in compliance with
  7. the License. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. ==================================================================== */
  15. package org.apache.poi.xssf.usermodel;
  16. import static junit.framework.TestCase.assertNotNull;
  17. import static junit.framework.TestCase.assertTrue;
  18. import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
  19. import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
  20. import static org.junit.Assert.assertEquals;
  21. import static org.junit.Assert.assertFalse;
  22. import static org.junit.Assert.assertNotSame;
  23. import static org.junit.Assert.assertNull;
  24. import static org.junit.Assert.assertSame;
  25. import static org.junit.Assert.fail;
  26. import java.util.List;
  27. import org.apache.poi.hssf.HSSFTestDataSamples;
  28. import org.apache.poi.poifs.crypt.CryptoFunctions;
  29. import org.apache.poi.poifs.crypt.HashAlgorithm;
  30. import org.apache.poi.ss.usermodel.AutoFilter;
  31. import org.apache.poi.ss.usermodel.BaseTestSheet;
  32. import org.apache.poi.ss.usermodel.Cell;
  33. import org.apache.poi.ss.usermodel.CreationHelper;
  34. import org.apache.poi.ss.usermodel.RichTextString;
  35. import org.apache.poi.ss.usermodel.Row;
  36. import org.apache.poi.ss.usermodel.Sheet;
  37. import org.apache.poi.ss.usermodel.Workbook;
  38. import org.apache.poi.ss.util.AreaReference;
  39. import org.apache.poi.ss.util.CellRangeAddress;
  40. import org.apache.poi.ss.util.CellReference;
  41. import org.apache.poi.xssf.SXSSFITestDataProvider;
  42. import org.apache.poi.xssf.XSSFITestDataProvider;
  43. import org.apache.poi.xssf.XSSFTestDataSamples;
  44. import org.apache.poi.xssf.model.CalculationChain;
  45. import org.apache.poi.xssf.model.CommentsTable;
  46. import org.apache.poi.xssf.model.StylesTable;
  47. import org.apache.poi.xssf.streaming.SXSSFSheet;
  48. import org.apache.poi.xssf.streaming.SXSSFWorkbook;
  49. import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
  50. import org.junit.Test;
  51. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcPr;
  52. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
  53. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
  54. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
  55. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
  56. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
  57. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData;
  58. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection;
  59. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
  60. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
  61. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCalcMode;
  62. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane;
  63. public final class TestXSSFSheet extends BaseTestSheet {
  64. private static final int ROW_COUNT = 40000;
  65. public TestXSSFSheet() {
  66. super(XSSFITestDataProvider.instance);
  67. }
  68. //TODO column styles are not yet supported by XSSF
  69. @Test
  70. public void defaultColumnStyle() {
  71. //super.defaultColumnStyle();
  72. }
  73. @Test
  74. public void getSetMargin() {
  75. baseTestGetSetMargin(new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3});
  76. }
  77. @Test
  78. public void existingHeaderFooter() {
  79. XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("45540_classic_Header.xlsx");
  80. XSSFOddHeader hdr;
  81. XSSFOddFooter ftr;
  82. // Sheet 1 has a header with center and right text
  83. XSSFSheet s1 = workbook.getSheetAt(0);
  84. assertNotNull(s1.getHeader());
  85. assertNotNull(s1.getFooter());
  86. hdr = (XSSFOddHeader) s1.getHeader();
  87. ftr = (XSSFOddFooter) s1.getFooter();
  88. assertEquals("&Ctestdoc&Rtest phrase", hdr.getText());
  89. assertEquals(null, ftr.getText());
  90. assertEquals("", hdr.getLeft());
  91. assertEquals("testdoc", hdr.getCenter());
  92. assertEquals("test phrase", hdr.getRight());
  93. assertEquals("", ftr.getLeft());
  94. assertEquals("", ftr.getCenter());
  95. assertEquals("", ftr.getRight());
  96. // Sheet 2 has a footer, but it's empty
  97. XSSFSheet s2 = workbook.getSheetAt(1);
  98. assertNotNull(s2.getHeader());
  99. assertNotNull(s2.getFooter());
  100. hdr = (XSSFOddHeader) s2.getHeader();
  101. ftr = (XSSFOddFooter) s2.getFooter();
  102. assertEquals(null, hdr.getText());
  103. assertEquals("&L&F", ftr.getText());
  104. assertEquals("", hdr.getLeft());
  105. assertEquals("", hdr.getCenter());
  106. assertEquals("", hdr.getRight());
  107. assertEquals("&F", ftr.getLeft());
  108. assertEquals("", ftr.getCenter());
  109. assertEquals("", ftr.getRight());
  110. // Save and reload
  111. XSSFWorkbook wb = XSSFTestDataSamples.writeOutAndReadBack(workbook);
  112. hdr = (XSSFOddHeader) wb.getSheetAt(0).getHeader();
  113. ftr = (XSSFOddFooter) wb.getSheetAt(0).getFooter();
  114. assertEquals("", hdr.getLeft());
  115. assertEquals("testdoc", hdr.getCenter());
  116. assertEquals("test phrase", hdr.getRight());
  117. assertEquals("", ftr.getLeft());
  118. assertEquals("", ftr.getCenter());
  119. assertEquals("", ftr.getRight());
  120. }
  121. @Test
  122. public void getAllHeadersFooters() {
  123. XSSFWorkbook workbook = new XSSFWorkbook();
  124. XSSFSheet sheet = workbook.createSheet("Sheet 1");
  125. assertNotNull(sheet.getOddFooter());
  126. assertNotNull(sheet.getEvenFooter());
  127. assertNotNull(sheet.getFirstFooter());
  128. assertNotNull(sheet.getOddHeader());
  129. assertNotNull(sheet.getEvenHeader());
  130. assertNotNull(sheet.getFirstHeader());
  131. assertEquals("", sheet.getOddFooter().getLeft());
  132. sheet.getOddFooter().setLeft("odd footer left");
  133. assertEquals("odd footer left", sheet.getOddFooter().getLeft());
  134. assertEquals("", sheet.getEvenFooter().getLeft());
  135. sheet.getEvenFooter().setLeft("even footer left");
  136. assertEquals("even footer left", sheet.getEvenFooter().getLeft());
  137. assertEquals("", sheet.getFirstFooter().getLeft());
  138. sheet.getFirstFooter().setLeft("first footer left");
  139. assertEquals("first footer left", sheet.getFirstFooter().getLeft());
  140. assertEquals("", sheet.getOddHeader().getLeft());
  141. sheet.getOddHeader().setLeft("odd header left");
  142. assertEquals("odd header left", sheet.getOddHeader().getLeft());
  143. assertEquals("", sheet.getOddHeader().getRight());
  144. sheet.getOddHeader().setRight("odd header right");
  145. assertEquals("odd header right", sheet.getOddHeader().getRight());
  146. assertEquals("", sheet.getOddHeader().getCenter());
  147. sheet.getOddHeader().setCenter("odd header center");
  148. assertEquals("odd header center", sheet.getOddHeader().getCenter());
  149. // Defaults are odd
  150. assertEquals("odd footer left", sheet.getFooter().getLeft());
  151. assertEquals("odd header center", sheet.getHeader().getCenter());
  152. }
  153. @Test
  154. public void autoSizeColumn() {
  155. XSSFWorkbook workbook = new XSSFWorkbook();
  156. XSSFSheet sheet = workbook.createSheet("Sheet 1");
  157. sheet.createRow(0).createCell(13).setCellValue("test");
  158. sheet.autoSizeColumn(13);
  159. ColumnHelper columnHelper = sheet.getColumnHelper();
  160. CTCol col = columnHelper.getColumn(13, false);
  161. assertTrue(col.getBestFit());
  162. }
  163. /**
  164. * XSSFSheet autoSizeColumn() on empty RichTextString fails
  165. */
  166. @Test
  167. public void bug48325() {
  168. XSSFWorkbook wb = new XSSFWorkbook();
  169. XSSFSheet sheet = wb.createSheet("Test");
  170. CreationHelper factory = wb.getCreationHelper();
  171. XSSFRow row = sheet.createRow(0);
  172. XSSFCell cell = row.createCell(0);
  173. XSSFFont font = wb.createFont();
  174. RichTextString rts = factory.createRichTextString("");
  175. rts.applyFont(font);
  176. cell.setCellValue(rts);
  177. sheet.autoSizeColumn(0);
  178. }
  179. @Test
  180. public void getCellComment() {
  181. XSSFWorkbook workbook = new XSSFWorkbook();
  182. XSSFSheet sheet = workbook.createSheet();
  183. XSSFDrawing dg = sheet.createDrawingPatriarch();
  184. XSSFComment comment = dg.createCellComment(new XSSFClientAnchor());
  185. XSSFCell cell = sheet.createRow(9).createCell(2);
  186. comment.setAuthor("test C10 author");
  187. cell.setCellComment(comment);
  188. assertNotNull(sheet.getCellComment(9, 2));
  189. assertEquals("test C10 author", sheet.getCellComment(9, 2).getAuthor());
  190. }
  191. @Test
  192. public void setCellComment() {
  193. XSSFWorkbook workbook = new XSSFWorkbook();
  194. XSSFSheet sheet = workbook.createSheet();
  195. XSSFDrawing dg = sheet.createDrawingPatriarch();
  196. XSSFComment comment = dg.createCellComment(new XSSFClientAnchor());
  197. Cell cell = sheet.createRow(0).createCell(0);
  198. CommentsTable comments = sheet.getCommentsTable(false);
  199. CTComments ctComments = comments.getCTComments();
  200. cell.setCellComment(comment);
  201. assertEquals("A1", ctComments.getCommentList().getCommentArray(0).getRef());
  202. comment.setAuthor("test A1 author");
  203. assertEquals("test A1 author", comments.getAuthor((int) ctComments.getCommentList().getCommentArray(0).getAuthorId()));
  204. }
  205. @Test
  206. public void getActiveCell() {
  207. XSSFWorkbook workbook = new XSSFWorkbook();
  208. XSSFSheet sheet = workbook.createSheet();
  209. sheet.setActiveCell("R5");
  210. assertEquals("R5", sheet.getActiveCell());
  211. }
  212. @Test
  213. public void createFreezePane_XSSF() {
  214. XSSFWorkbook workbook = new XSSFWorkbook();
  215. XSSFSheet sheet = workbook.createSheet();
  216. CTWorksheet ctWorksheet = sheet.getCTWorksheet();
  217. sheet.createFreezePane(2, 4);
  218. assertEquals(2.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0);
  219. assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane());
  220. sheet.createFreezePane(3, 6, 10, 10);
  221. assertEquals(3.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0);
  222. // assertEquals(10, sheet.getTopRow());
  223. // assertEquals(10, sheet.getLeftCol());
  224. sheet.createSplitPane(4, 8, 12, 12, 1);
  225. assertEquals(8.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getYSplit(), 0.0);
  226. assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane());
  227. }
  228. @Test
  229. public void newMergedRegionAt() {
  230. XSSFWorkbook workbook = new XSSFWorkbook();
  231. XSSFSheet sheet = workbook.createSheet();
  232. CellRangeAddress region = CellRangeAddress.valueOf("B2:D4");
  233. sheet.addMergedRegion(region);
  234. assertEquals("B2:D4", sheet.getMergedRegion(0).formatAsString());
  235. assertEquals(1, sheet.getNumMergedRegions());
  236. }
  237. @Test
  238. public void removeMergedRegion_lowlevel() {
  239. XSSFWorkbook workbook = new XSSFWorkbook();
  240. XSSFSheet sheet = workbook.createSheet();
  241. CTWorksheet ctWorksheet = sheet.getCTWorksheet();
  242. CellRangeAddress region_1 = CellRangeAddress.valueOf("A1:B2");
  243. CellRangeAddress region_2 = CellRangeAddress.valueOf("C3:D4");
  244. CellRangeAddress region_3 = CellRangeAddress.valueOf("E5:F6");
  245. sheet.addMergedRegion(region_1);
  246. sheet.addMergedRegion(region_2);
  247. sheet.addMergedRegion(region_3);
  248. assertEquals("C3:D4", ctWorksheet.getMergeCells().getMergeCellArray(1).getRef());
  249. assertEquals(3, sheet.getNumMergedRegions());
  250. sheet.removeMergedRegion(1);
  251. assertEquals("E5:F6", ctWorksheet.getMergeCells().getMergeCellArray(1).getRef());
  252. assertEquals(2, sheet.getNumMergedRegions());
  253. sheet.removeMergedRegion(1);
  254. sheet.removeMergedRegion(0);
  255. assertEquals(0, sheet.getNumMergedRegions());
  256. assertNull(" CTMergeCells should be deleted after removing the last merged " +
  257. "region on the sheet.", sheet.getCTWorksheet().getMergeCells());
  258. }
  259. @Test
  260. public void setDefaultColumnStyle() {
  261. XSSFWorkbook workbook = new XSSFWorkbook();
  262. XSSFSheet sheet = workbook.createSheet();
  263. CTWorksheet ctWorksheet = sheet.getCTWorksheet();
  264. StylesTable stylesTable = workbook.getStylesSource();
  265. XSSFFont font = new XSSFFont();
  266. font.setFontName("Cambria");
  267. stylesTable.putFont(font);
  268. CTXf cellStyleXf = CTXf.Factory.newInstance();
  269. cellStyleXf.setFontId(1);
  270. cellStyleXf.setFillId(0);
  271. cellStyleXf.setBorderId(0);
  272. cellStyleXf.setNumFmtId(0);
  273. stylesTable.putCellStyleXf(cellStyleXf);
  274. CTXf cellXf = CTXf.Factory.newInstance();
  275. cellXf.setXfId(1);
  276. stylesTable.putCellXf(cellXf);
  277. XSSFCellStyle cellStyle = new XSSFCellStyle(1, 1, stylesTable, null);
  278. assertEquals(1, cellStyle.getFontIndex());
  279. sheet.setDefaultColumnStyle(3, cellStyle);
  280. assertEquals(1, ctWorksheet.getColsArray(0).getColArray(0).getStyle());
  281. }
  282. @Test
  283. @SuppressWarnings("deprecation")
  284. public void groupUngroupColumn() {
  285. XSSFWorkbook workbook = new XSSFWorkbook();
  286. XSSFSheet sheet = workbook.createSheet();
  287. //one level
  288. sheet.groupColumn(2, 7);
  289. sheet.groupColumn(10, 11);
  290. CTCols cols = sheet.getCTWorksheet().getColsArray(0);
  291. assertEquals(2, cols.sizeOfColArray());
  292. CTCol[] colArray = cols.getColArray();
  293. assertNotNull(colArray);
  294. assertEquals(2 + 1, colArray[0].getMin()); // 1 based
  295. assertEquals(7 + 1, colArray[0].getMax()); // 1 based
  296. assertEquals(1, colArray[0].getOutlineLevel());
  297. //two level
  298. sheet.groupColumn(1, 2);
  299. cols = sheet.getCTWorksheet().getColsArray(0);
  300. assertEquals(4, cols.sizeOfColArray());
  301. colArray = cols.getColArray();
  302. assertEquals(2, colArray[1].getOutlineLevel());
  303. //three level
  304. sheet.groupColumn(6, 8);
  305. sheet.groupColumn(2, 3);
  306. cols = sheet.getCTWorksheet().getColsArray(0);
  307. assertEquals(7, cols.sizeOfColArray());
  308. colArray = cols.getColArray();
  309. assertEquals(3, colArray[1].getOutlineLevel());
  310. assertEquals(3, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelCol());
  311. sheet.ungroupColumn(8, 10);
  312. colArray = cols.getColArray();
  313. //assertEquals(3, colArray[1].getOutlineLevel());
  314. sheet.ungroupColumn(4, 6);
  315. sheet.ungroupColumn(2, 2);
  316. colArray = cols.getColArray();
  317. assertEquals(4, colArray.length);
  318. assertEquals(2, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelCol());
  319. }
  320. @Test
  321. public void groupUngroupRow() {
  322. XSSFWorkbook workbook = new XSSFWorkbook();
  323. XSSFSheet sheet = workbook.createSheet();
  324. //one level
  325. sheet.groupRow(9, 10);
  326. assertEquals(2, sheet.getPhysicalNumberOfRows());
  327. CTRow ctrow = sheet.getRow(9).getCTRow();
  328. assertNotNull(ctrow);
  329. assertEquals(10, ctrow.getR());
  330. assertEquals(1, ctrow.getOutlineLevel());
  331. assertEquals(1, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow());
  332. //two level
  333. sheet.groupRow(10, 13);
  334. assertEquals(5, sheet.getPhysicalNumberOfRows());
  335. ctrow = sheet.getRow(10).getCTRow();
  336. assertNotNull(ctrow);
  337. assertEquals(11, ctrow.getR());
  338. assertEquals(2, ctrow.getOutlineLevel());
  339. assertEquals(2, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow());
  340. sheet.ungroupRow(8, 10);
  341. assertEquals(4, sheet.getPhysicalNumberOfRows());
  342. assertEquals(1, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow());
  343. sheet.ungroupRow(10, 10);
  344. assertEquals(3, sheet.getPhysicalNumberOfRows());
  345. assertEquals(1, sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow());
  346. }
  347. @Test
  348. public void setZoom() {
  349. XSSFWorkbook workBook = new XSSFWorkbook();
  350. XSSFSheet sheet1 = workBook.createSheet("new sheet");
  351. sheet1.setZoom(3, 4); // 75 percent magnification
  352. long zoom = sheet1.getCTWorksheet().getSheetViews().getSheetViewArray(0).getZoomScale();
  353. assertEquals(zoom, 75);
  354. sheet1.setZoom(200);
  355. zoom = sheet1.getCTWorksheet().getSheetViews().getSheetViewArray(0).getZoomScale();
  356. assertEquals(zoom, 200);
  357. try {
  358. sheet1.setZoom(500);
  359. fail("Expecting exception");
  360. } catch (IllegalArgumentException e) {
  361. assertEquals("Valid scale values range from 10 to 400", e.getMessage());
  362. }
  363. }
  364. /**
  365. * TODO - while this is internally consistent, I'm not
  366. * completely clear in all cases what it's supposed to
  367. * be doing... Someone who understands the goals a little
  368. * better should really review this!
  369. */
  370. @Test
  371. public void setColumnGroupCollapsed(){
  372. Workbook wb = new XSSFWorkbook();
  373. XSSFSheet sheet1 =(XSSFSheet) wb.createSheet();
  374. CTCols cols=sheet1.getCTWorksheet().getColsArray(0);
  375. assertEquals(0,cols.sizeOfColArray());
  376. sheet1.groupColumn( (short)4, (short)7 );
  377. sheet1.groupColumn( (short)9, (short)12 );
  378. assertEquals(2,cols.sizeOfColArray());
  379. assertEquals(false,cols.getColArray(0).isSetHidden());
  380. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  381. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  382. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  383. assertEquals(false,cols.getColArray(1).isSetHidden());
  384. assertEquals(true, cols.getColArray(1).isSetCollapsed());
  385. assertEquals(10, cols.getColArray(1).getMin()); // 1 based
  386. assertEquals(13, cols.getColArray(1).getMax()); // 1 based
  387. sheet1.groupColumn( (short)10, (short)11 );
  388. assertEquals(4,cols.sizeOfColArray());
  389. assertEquals(false,cols.getColArray(0).isSetHidden());
  390. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  391. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  392. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  393. assertEquals(false,cols.getColArray(1).isSetHidden());
  394. assertEquals(true, cols.getColArray(1).isSetCollapsed());
  395. assertEquals(10, cols.getColArray(1).getMin()); // 1 based
  396. assertEquals(10, cols.getColArray(1).getMax()); // 1 based
  397. assertEquals(false,cols.getColArray(2).isSetHidden());
  398. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  399. assertEquals(11, cols.getColArray(2).getMin()); // 1 based
  400. assertEquals(12, cols.getColArray(2).getMax()); // 1 based
  401. assertEquals(false,cols.getColArray(3).isSetHidden());
  402. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  403. assertEquals(13, cols.getColArray(3).getMin()); // 1 based
  404. assertEquals(13, cols.getColArray(3).getMax()); // 1 based
  405. // collapse columns - 1
  406. sheet1.setColumnGroupCollapsed( (short)5, true );
  407. assertEquals(5,cols.sizeOfColArray());
  408. assertEquals(true, cols.getColArray(0).isSetHidden());
  409. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  410. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  411. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  412. assertEquals(false,cols.getColArray(1).isSetHidden());
  413. assertEquals(true, cols.getColArray(1).isSetCollapsed());
  414. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  415. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  416. assertEquals(false,cols.getColArray(2).isSetHidden());
  417. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  418. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  419. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  420. assertEquals(false,cols.getColArray(3).isSetHidden());
  421. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  422. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  423. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  424. assertEquals(false,cols.getColArray(4).isSetHidden());
  425. assertEquals(true, cols.getColArray(4).isSetCollapsed());
  426. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  427. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  428. // expand columns - 1
  429. sheet1.setColumnGroupCollapsed( (short)5, false );
  430. assertEquals(false,cols.getColArray(0).isSetHidden());
  431. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  432. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  433. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  434. assertEquals(false,cols.getColArray(1).isSetHidden());
  435. assertEquals(false,cols.getColArray(1).isSetCollapsed());
  436. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  437. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  438. assertEquals(false,cols.getColArray(2).isSetHidden());
  439. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  440. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  441. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  442. assertEquals(false,cols.getColArray(3).isSetHidden());
  443. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  444. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  445. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  446. assertEquals(false,cols.getColArray(4).isSetHidden());
  447. assertEquals(true, cols.getColArray(4).isSetCollapsed());
  448. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  449. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  450. //collapse - 2
  451. sheet1.setColumnGroupCollapsed( (short)9, true );
  452. assertEquals(6,cols.sizeOfColArray());
  453. assertEquals(false,cols.getColArray(0).isSetHidden());
  454. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  455. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  456. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  457. assertEquals(false,cols.getColArray(1).isSetHidden());
  458. assertEquals(true,cols.getColArray(1).isSetCollapsed());
  459. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  460. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  461. assertEquals(true, cols.getColArray(2).isSetHidden());
  462. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  463. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  464. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  465. assertEquals(true, cols.getColArray(3).isSetHidden());
  466. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  467. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  468. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  469. assertEquals(true, cols.getColArray(4).isSetHidden());
  470. assertEquals(true, cols.getColArray(4).isSetCollapsed());
  471. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  472. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  473. assertEquals(false,cols.getColArray(5).isSetHidden());
  474. assertEquals(true, cols.getColArray(5).isSetCollapsed());
  475. assertEquals(14, cols.getColArray(5).getMin()); // 1 based
  476. assertEquals(14, cols.getColArray(5).getMax()); // 1 based
  477. //expand - 2
  478. sheet1.setColumnGroupCollapsed( (short)9, false );
  479. assertEquals(6,cols.sizeOfColArray());
  480. assertEquals(14,cols.getColArray(5).getMin());
  481. //outline level 2: the line under ==> collapsed==True
  482. assertEquals(2,cols.getColArray(3).getOutlineLevel());
  483. assertEquals(true,cols.getColArray(4).isSetCollapsed());
  484. assertEquals(false,cols.getColArray(0).isSetHidden());
  485. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  486. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  487. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  488. assertEquals(false,cols.getColArray(1).isSetHidden());
  489. assertEquals(true,cols.getColArray(1).isSetCollapsed());
  490. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  491. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  492. assertEquals(false,cols.getColArray(2).isSetHidden());
  493. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  494. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  495. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  496. assertEquals(true, cols.getColArray(3).isSetHidden());
  497. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  498. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  499. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  500. assertEquals(false,cols.getColArray(4).isSetHidden());
  501. assertEquals(true, cols.getColArray(4).isSetCollapsed());
  502. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  503. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  504. assertEquals(false,cols.getColArray(5).isSetHidden());
  505. assertEquals(false,cols.getColArray(5).isSetCollapsed());
  506. assertEquals(14, cols.getColArray(5).getMin()); // 1 based
  507. assertEquals(14, cols.getColArray(5).getMax()); // 1 based
  508. //DOCUMENTARE MEGLIO IL DISCORSO DEL LIVELLO
  509. //collapse - 3
  510. sheet1.setColumnGroupCollapsed( (short)10, true );
  511. assertEquals(6,cols.sizeOfColArray());
  512. assertEquals(false,cols.getColArray(0).isSetHidden());
  513. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  514. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  515. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  516. assertEquals(false,cols.getColArray(1).isSetHidden());
  517. assertEquals(true,cols.getColArray(1).isSetCollapsed());
  518. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  519. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  520. assertEquals(false,cols.getColArray(2).isSetHidden());
  521. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  522. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  523. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  524. assertEquals(true, cols.getColArray(3).isSetHidden());
  525. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  526. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  527. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  528. assertEquals(false,cols.getColArray(4).isSetHidden());
  529. assertEquals(true, cols.getColArray(4).isSetCollapsed());
  530. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  531. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  532. assertEquals(false,cols.getColArray(5).isSetHidden());
  533. assertEquals(false,cols.getColArray(5).isSetCollapsed());
  534. assertEquals(14, cols.getColArray(5).getMin()); // 1 based
  535. assertEquals(14, cols.getColArray(5).getMax()); // 1 based
  536. //expand - 3
  537. sheet1.setColumnGroupCollapsed( (short)10, false );
  538. assertEquals(6,cols.sizeOfColArray());
  539. assertEquals(false,cols.getColArray(0).getHidden());
  540. assertEquals(false,cols.getColArray(5).getHidden());
  541. assertEquals(false,cols.getColArray(4).isSetCollapsed());
  542. // write out and give back
  543. // Save and re-load
  544. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  545. sheet1 = (XSSFSheet)wb.getSheetAt(0);
  546. assertEquals(6,cols.sizeOfColArray());
  547. assertEquals(false,cols.getColArray(0).isSetHidden());
  548. assertEquals(true, cols.getColArray(0).isSetCollapsed());
  549. assertEquals(5, cols.getColArray(0).getMin()); // 1 based
  550. assertEquals(8, cols.getColArray(0).getMax()); // 1 based
  551. assertEquals(false,cols.getColArray(1).isSetHidden());
  552. assertEquals(true,cols.getColArray(1).isSetCollapsed());
  553. assertEquals(9, cols.getColArray(1).getMin()); // 1 based
  554. assertEquals(9, cols.getColArray(1).getMax()); // 1 based
  555. assertEquals(false,cols.getColArray(2).isSetHidden());
  556. assertEquals(true, cols.getColArray(2).isSetCollapsed());
  557. assertEquals(10, cols.getColArray(2).getMin()); // 1 based
  558. assertEquals(10, cols.getColArray(2).getMax()); // 1 based
  559. assertEquals(false,cols.getColArray(3).isSetHidden());
  560. assertEquals(true, cols.getColArray(3).isSetCollapsed());
  561. assertEquals(11, cols.getColArray(3).getMin()); // 1 based
  562. assertEquals(12, cols.getColArray(3).getMax()); // 1 based
  563. assertEquals(false,cols.getColArray(4).isSetHidden());
  564. assertEquals(false,cols.getColArray(4).isSetCollapsed());
  565. assertEquals(13, cols.getColArray(4).getMin()); // 1 based
  566. assertEquals(13, cols.getColArray(4).getMax()); // 1 based
  567. assertEquals(false,cols.getColArray(5).isSetHidden());
  568. assertEquals(false,cols.getColArray(5).isSetCollapsed());
  569. assertEquals(14, cols.getColArray(5).getMin()); // 1 based
  570. assertEquals(14, cols.getColArray(5).getMax()); // 1 based
  571. }
  572. /**
  573. * TODO - while this is internally consistent, I'm not
  574. * completely clear in all cases what it's supposed to
  575. * be doing... Someone who understands the goals a little
  576. * better should really review this!
  577. */
  578. @Test
  579. public void setRowGroupCollapsed(){
  580. Workbook wb = new XSSFWorkbook();
  581. XSSFSheet sheet1 = (XSSFSheet)wb.createSheet();
  582. sheet1.groupRow( 5, 14 );
  583. sheet1.groupRow( 7, 14 );
  584. sheet1.groupRow( 16, 19 );
  585. assertEquals(14,sheet1.getPhysicalNumberOfRows());
  586. assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
  587. assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
  588. assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed());
  589. assertEquals(false,sheet1.getRow(7).getCTRow().isSetHidden());
  590. assertEquals(false,sheet1.getRow(9).getCTRow().isSetCollapsed());
  591. assertEquals(false,sheet1.getRow(9).getCTRow().isSetHidden());
  592. assertEquals(false,sheet1.getRow(14).getCTRow().isSetCollapsed());
  593. assertEquals(false,sheet1.getRow(14).getCTRow().isSetHidden());
  594. assertEquals(false,sheet1.getRow(16).getCTRow().isSetCollapsed());
  595. assertEquals(false,sheet1.getRow(16).getCTRow().isSetHidden());
  596. assertEquals(false,sheet1.getRow(18).getCTRow().isSetCollapsed());
  597. assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden());
  598. //collapsed
  599. sheet1.setRowGroupCollapsed( 7, true );
  600. assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
  601. assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
  602. assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed());
  603. assertEquals(true, sheet1.getRow(7).getCTRow().isSetHidden());
  604. assertEquals(false,sheet1.getRow(9).getCTRow().isSetCollapsed());
  605. assertEquals(true, sheet1.getRow(9).getCTRow().isSetHidden());
  606. assertEquals(false,sheet1.getRow(14).getCTRow().isSetCollapsed());
  607. assertEquals(true, sheet1.getRow(14).getCTRow().isSetHidden());
  608. assertEquals(false,sheet1.getRow(16).getCTRow().isSetCollapsed());
  609. assertEquals(false,sheet1.getRow(16).getCTRow().isSetHidden());
  610. assertEquals(false,sheet1.getRow(18).getCTRow().isSetCollapsed());
  611. assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden());
  612. //expanded
  613. sheet1.setRowGroupCollapsed( 7, false );
  614. assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
  615. assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
  616. assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed());
  617. assertEquals(true, sheet1.getRow(7).getCTRow().isSetHidden());
  618. assertEquals(false,sheet1.getRow(9).getCTRow().isSetCollapsed());
  619. assertEquals(true, sheet1.getRow(9).getCTRow().isSetHidden());
  620. assertEquals(false,sheet1.getRow(14).getCTRow().isSetCollapsed());
  621. assertEquals(true, sheet1.getRow(14).getCTRow().isSetHidden());
  622. assertEquals(false,sheet1.getRow(16).getCTRow().isSetCollapsed());
  623. assertEquals(false,sheet1.getRow(16).getCTRow().isSetHidden());
  624. assertEquals(false,sheet1.getRow(18).getCTRow().isSetCollapsed());
  625. assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden());
  626. // Save and re-load
  627. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  628. sheet1 = (XSSFSheet)wb.getSheetAt(0);
  629. assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
  630. assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
  631. assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed());
  632. assertEquals(true, sheet1.getRow(7).getCTRow().isSetHidden());
  633. assertEquals(false,sheet1.getRow(9).getCTRow().isSetCollapsed());
  634. assertEquals(true, sheet1.getRow(9).getCTRow().isSetHidden());
  635. assertEquals(false,sheet1.getRow(14).getCTRow().isSetCollapsed());
  636. assertEquals(true, sheet1.getRow(14).getCTRow().isSetHidden());
  637. assertEquals(false,sheet1.getRow(16).getCTRow().isSetCollapsed());
  638. assertEquals(false,sheet1.getRow(16).getCTRow().isSetHidden());
  639. assertEquals(false,sheet1.getRow(18).getCTRow().isSetCollapsed());
  640. assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden());
  641. }
  642. /**
  643. * Get / Set column width and check the actual values of the underlying XML beans
  644. */
  645. @Test
  646. public void columnWidth_lowlevel() {
  647. XSSFWorkbook workbook = new XSSFWorkbook();
  648. XSSFSheet sheet = workbook.createSheet("Sheet 1");
  649. sheet.setColumnWidth(1, 22 * 256);
  650. assertEquals(22 * 256, sheet.getColumnWidth(1));
  651. // Now check the low level stuff, and check that's all
  652. // been set correctly
  653. XSSFSheet xs = sheet;
  654. CTWorksheet cts = xs.getCTWorksheet();
  655. assertEquals(1, cts.sizeOfColsArray());
  656. CTCols cols = cts.getColsArray(0);
  657. assertEquals(1, cols.sizeOfColArray());
  658. CTCol col = cols.getColArray(0);
  659. // XML is 1 based, POI is 0 based
  660. assertEquals(2, col.getMin());
  661. assertEquals(2, col.getMax());
  662. assertEquals(22.0, col.getWidth(), 0.0);
  663. assertTrue(col.getCustomWidth());
  664. // Now set another
  665. sheet.setColumnWidth(3, 33 * 256);
  666. assertEquals(1, cts.sizeOfColsArray());
  667. cols = cts.getColsArray(0);
  668. assertEquals(2, cols.sizeOfColArray());
  669. col = cols.getColArray(0);
  670. assertEquals(2, col.getMin()); // POI 1
  671. assertEquals(2, col.getMax());
  672. assertEquals(22.0, col.getWidth(), 0.0);
  673. assertTrue(col.getCustomWidth());
  674. col = cols.getColArray(1);
  675. assertEquals(4, col.getMin()); // POI 3
  676. assertEquals(4, col.getMax());
  677. assertEquals(33.0, col.getWidth(), 0.0);
  678. assertTrue(col.getCustomWidth());
  679. }
  680. /**
  681. * Setting width of a column included in a column span
  682. */
  683. @Test
  684. public void bug47862() {
  685. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47862.xlsx");
  686. XSSFSheet sheet = wb.getSheetAt(0);
  687. CTCols cols = sheet.getCTWorksheet().getColsArray(0);
  688. //<cols>
  689. // <col min="1" max="5" width="15.77734375" customWidth="1"/>
  690. //</cols>
  691. //a span of columns [1,5]
  692. assertEquals(1, cols.sizeOfColArray());
  693. CTCol col = cols.getColArray(0);
  694. assertEquals(1, col.getMin());
  695. assertEquals(5, col.getMax());
  696. double swidth = 15.77734375; //width of columns in the span
  697. assertEquals(swidth, col.getWidth(), 0.0);
  698. for (int i = 0; i < 5; i++) {
  699. assertEquals((int)(swidth*256), sheet.getColumnWidth(i));
  700. }
  701. int[] cw = new int[]{10, 15, 20, 25, 30};
  702. for (int i = 0; i < 5; i++) {
  703. sheet.setColumnWidth(i, cw[i]*256);
  704. }
  705. //the check below failed prior to fix of Bug #47862
  706. ColumnHelper.sortColumns(cols);
  707. //<cols>
  708. // <col min="1" max="1" customWidth="true" width="10.0" />
  709. // <col min="2" max="2" customWidth="true" width="15.0" />
  710. // <col min="3" max="3" customWidth="true" width="20.0" />
  711. // <col min="4" max="4" customWidth="true" width="25.0" />
  712. // <col min="5" max="5" customWidth="true" width="30.0" />
  713. //</cols>
  714. //now the span is splitted into 5 individual columns
  715. assertEquals(5, cols.sizeOfColArray());
  716. for (int i = 0; i < 5; i++) {
  717. assertEquals(cw[i]*256, sheet.getColumnWidth(i));
  718. assertEquals(cw[i], cols.getColArray(i).getWidth(), 0.0);
  719. }
  720. //serialize and check again
  721. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  722. sheet = wb.getSheetAt(0);
  723. cols = sheet.getCTWorksheet().getColsArray(0);
  724. assertEquals(5, cols.sizeOfColArray());
  725. for (int i = 0; i < 5; i++) {
  726. assertEquals(cw[i]*256, sheet.getColumnWidth(i));
  727. assertEquals(cw[i], cols.getColArray(i).getWidth(), 0.0);
  728. }
  729. }
  730. /**
  731. * Hiding a column included in a column span
  732. */
  733. @Test
  734. public void bug47804() {
  735. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47804.xlsx");
  736. XSSFSheet sheet = wb.getSheetAt(0);
  737. CTCols cols = sheet.getCTWorksheet().getColsArray(0);
  738. assertEquals(2, cols.sizeOfColArray());
  739. CTCol col;
  740. //<cols>
  741. // <col min="2" max="4" width="12" customWidth="1"/>
  742. // <col min="7" max="7" width="10.85546875" customWidth="1"/>
  743. //</cols>
  744. //a span of columns [2,4]
  745. col = cols.getColArray(0);
  746. assertEquals(2, col.getMin());
  747. assertEquals(4, col.getMax());
  748. //individual column
  749. col = cols.getColArray(1);
  750. assertEquals(7, col.getMin());
  751. assertEquals(7, col.getMax());
  752. sheet.setColumnHidden(2, true); // Column C
  753. sheet.setColumnHidden(6, true); // Column G
  754. assertTrue(sheet.isColumnHidden(2));
  755. assertTrue(sheet.isColumnHidden(6));
  756. //other columns but C and G are not hidden
  757. assertFalse(sheet.isColumnHidden(1));
  758. assertFalse(sheet.isColumnHidden(3));
  759. assertFalse(sheet.isColumnHidden(4));
  760. assertFalse(sheet.isColumnHidden(5));
  761. //the check below failed prior to fix of Bug #47804
  762. ColumnHelper.sortColumns(cols);
  763. //the span is now splitted into three parts
  764. //<cols>
  765. // <col min="2" max="2" customWidth="true" width="12.0" />
  766. // <col min="3" max="3" customWidth="true" width="12.0" hidden="true"/>
  767. // <col min="4" max="4" customWidth="true" width="12.0"/>
  768. // <col min="7" max="7" customWidth="true" width="10.85546875" hidden="true"/>
  769. //</cols>
  770. assertEquals(4, cols.sizeOfColArray());
  771. col = cols.getColArray(0);
  772. assertEquals(2, col.getMin());
  773. assertEquals(2, col.getMax());
  774. col = cols.getColArray(1);
  775. assertEquals(3, col.getMin());
  776. assertEquals(3, col.getMax());
  777. col = cols.getColArray(2);
  778. assertEquals(4, col.getMin());
  779. assertEquals(4, col.getMax());
  780. col = cols.getColArray(3);
  781. assertEquals(7, col.getMin());
  782. assertEquals(7, col.getMax());
  783. //serialize and check again
  784. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  785. sheet = wb.getSheetAt(0);
  786. assertTrue(sheet.isColumnHidden(2));
  787. assertTrue(sheet.isColumnHidden(6));
  788. assertFalse(sheet.isColumnHidden(1));
  789. assertFalse(sheet.isColumnHidden(3));
  790. assertFalse(sheet.isColumnHidden(4));
  791. assertFalse(sheet.isColumnHidden(5));
  792. }
  793. @Test
  794. public void commentsTable() {
  795. XSSFWorkbook workbook = new XSSFWorkbook();
  796. XSSFSheet sheet1 = workbook.createSheet();
  797. CommentsTable comment1 = sheet1.getCommentsTable(false);
  798. assertNull(comment1);
  799. comment1 = sheet1.getCommentsTable(true);
  800. assertNotNull(comment1);
  801. assertEquals("/xl/comments1.xml", comment1.getPackageRelationship().getTargetURI().toString());
  802. assertSame(comment1, sheet1.getCommentsTable(true));
  803. //second sheet
  804. XSSFSheet sheet2 = workbook.createSheet();
  805. CommentsTable comment2 = sheet2.getCommentsTable(false);
  806. assertNull(comment2);
  807. comment2 = sheet2.getCommentsTable(true);
  808. assertNotNull(comment2);
  809. assertSame(comment2, sheet2.getCommentsTable(true));
  810. assertEquals("/xl/comments2.xml", comment2.getPackageRelationship().getTargetURI().toString());
  811. //comment1 and comment2 are different objects
  812. assertNotSame(comment1, comment2);
  813. //now test against a workbook containing cell comments
  814. workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
  815. sheet1 = workbook.getSheetAt(0);
  816. comment1 = sheet1.getCommentsTable(true);
  817. assertNotNull(comment1);
  818. assertEquals("/xl/comments1.xml", comment1.getPackageRelationship().getTargetURI().toString());
  819. assertSame(comment1, sheet1.getCommentsTable(true));
  820. }
  821. /**
  822. * Rows and cells can be created in random order,
  823. * but CTRows are kept in ascending order
  824. */
  825. @Test
  826. @SuppressWarnings("deprecation")
  827. public void createRow() {
  828. XSSFWorkbook workbook = new XSSFWorkbook();
  829. XSSFSheet sheet = workbook.createSheet();
  830. CTWorksheet wsh = sheet.getCTWorksheet();
  831. CTSheetData sheetData = wsh.getSheetData();
  832. assertEquals(0, sheetData.sizeOfRowArray());
  833. XSSFRow row1 = sheet.createRow(2);
  834. row1.createCell(2);
  835. row1.createCell(1);
  836. XSSFRow row2 = sheet.createRow(1);
  837. row2.createCell(2);
  838. row2.createCell(1);
  839. row2.createCell(0);
  840. XSSFRow row3 = sheet.createRow(0);
  841. row3.createCell(3);
  842. row3.createCell(0);
  843. row3.createCell(2);
  844. row3.createCell(5);
  845. CTRow[] xrow = sheetData.getRowArray();
  846. assertEquals(3, xrow.length);
  847. //rows are sorted: {0, 1, 2}
  848. assertEquals(4, xrow[0].sizeOfCArray());
  849. assertEquals(1, xrow[0].getR());
  850. assertTrue(xrow[0].equals(row3.getCTRow()));
  851. assertEquals(3, xrow[1].sizeOfCArray());
  852. assertEquals(2, xrow[1].getR());
  853. assertTrue(xrow[1].equals(row2.getCTRow()));
  854. assertEquals(2, xrow[2].sizeOfCArray());
  855. assertEquals(3, xrow[2].getR());
  856. assertTrue(xrow[2].equals(row1.getCTRow()));
  857. CTCell[] xcell = xrow[0].getCArray();
  858. assertEquals("D1", xcell[0].getR());
  859. assertEquals("A1", xcell[1].getR());
  860. assertEquals("C1", xcell[2].getR());
  861. assertEquals("F1", xcell[3].getR());
  862. //re-creating a row does NOT add extra data to the parent
  863. row2 = sheet.createRow(1);
  864. assertEquals(3, sheetData.sizeOfRowArray());
  865. //existing cells are invalidated
  866. assertEquals(0, sheetData.getRowArray(1).sizeOfCArray());
  867. assertEquals(0, row2.getPhysicalNumberOfCells());
  868. workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
  869. sheet = workbook.getSheetAt(0);
  870. wsh = sheet.getCTWorksheet();
  871. xrow = sheetData.getRowArray();
  872. assertEquals(3, xrow.length);
  873. //rows are sorted: {0, 1, 2}
  874. assertEquals(4, xrow[0].sizeOfCArray());
  875. assertEquals(1, xrow[0].getR());
  876. //cells are now sorted
  877. xcell = xrow[0].getCArray();
  878. assertEquals("A1", xcell[0].getR());
  879. assertEquals("C1", xcell[1].getR());
  880. assertEquals("D1", xcell[2].getR());
  881. assertEquals("F1", xcell[3].getR());
  882. assertEquals(0, xrow[1].sizeOfCArray());
  883. assertEquals(2, xrow[1].getR());
  884. assertEquals(2, xrow[2].sizeOfCArray());
  885. assertEquals(3, xrow[2].getR());
  886. }
  887. @Test
  888. public void setAutoFilter() {
  889. XSSFWorkbook wb = new XSSFWorkbook();
  890. XSSFSheet sheet = wb.createSheet("new sheet");
  891. sheet.setAutoFilter(CellRangeAddress.valueOf("A1:D100"));
  892. assertEquals("A1:D100", sheet.getCTWorksheet().getAutoFilter().getRef());
  893. // auto-filter must be registered in workboook.xml, see Bugzilla 50315
  894. XSSFName nm = wb.getBuiltInName(XSSFName.BUILTIN_FILTER_DB, 0);
  895. assertNotNull(nm);
  896. assertEquals(0, nm.getCTName().getLocalSheetId());
  897. assertEquals(true, nm.getCTName().getHidden());
  898. assertEquals("_xlnm._FilterDatabase", nm.getCTName().getName());
  899. assertEquals("'new sheet'!$A$1:$D$100", nm.getCTName().getStringValue());
  900. }
  901. @Test
  902. public void protectSheet_lowlevel() {
  903. XSSFWorkbook wb = new XSSFWorkbook();
  904. XSSFSheet sheet = wb.createSheet();
  905. CTSheetProtection pr = sheet.getCTWorksheet().getSheetProtection();
  906. assertNull("CTSheetProtection should be null by default", pr);
  907. String password = "Test";
  908. sheet.protectSheet(password);
  909. pr = sheet.getCTWorksheet().getSheetProtection();
  910. assertNotNull("CTSheetProtection should be not null", pr);
  911. assertTrue("sheet protection should be on", pr.isSetSheet());
  912. assertTrue("object protection should be on", pr.isSetObjects());
  913. assertTrue("scenario protection should be on", pr.isSetScenarios());
  914. int hashVal = CryptoFunctions.createXorVerifier1(password);
  915. int actualVal = Integer.parseInt(pr.xgetPassword().getStringValue(),16);
  916. assertEquals("well known value for top secret hash should match", hashVal, actualVal);
  917. sheet.protectSheet(null);
  918. assertNull("protectSheet(null) should unset CTSheetProtection", sheet.getCTWorksheet().getSheetProtection());
  919. }
  920. @Test
  921. public void protectSheet_lowlevel_2013() {
  922. String password = "test";
  923. XSSFWorkbook wb = new XSSFWorkbook();
  924. XSSFSheet xs = wb.createSheet();
  925. xs.setSheetPassword(password, HashAlgorithm.sha384);
  926. wb = writeOutAndReadBack(wb);
  927. assertTrue(wb.getSheetAt(0).validateSheetPassword(password));
  928. wb = openSampleWorkbook("workbookProtection-sheet_password-2013.xlsx");
  929. assertTrue(wb.getSheetAt(0).validateSheetPassword("pwd"));
  930. }
  931. @Test
  932. public void bug49966() {
  933. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49966.xlsx");
  934. CalculationChain calcChain = wb.getCalculationChain();
  935. assertNotNull(wb.getCalculationChain());
  936. assertEquals(3, calcChain.getCTCalcChain().sizeOfCArray());
  937. XSSFSheet sheet = wb.getSheetAt(0);
  938. XSSFRow row = sheet.getRow(0);
  939. sheet.removeRow(row);
  940. assertEquals("XSSFSheet#removeRow did not clear calcChain entries",
  941. 0, calcChain.getCTCalcChain().sizeOfCArray());
  942. //calcChain should be gone
  943. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  944. assertNull(wb.getCalculationChain());
  945. }
  946. /**
  947. * See bug #50829
  948. */
  949. @Test
  950. public void tables() {
  951. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithTable.xlsx");
  952. assertEquals(3, wb.getNumberOfSheets());
  953. // Check the table sheet
  954. XSSFSheet s1 = wb.getSheetAt(0);
  955. assertEquals("a", s1.getRow(0).getCell(0).getRichStringCellValue().toString());
  956. assertEquals(1.0, s1.getRow(1).getCell(0).getNumericCellValue(), 0);
  957. List<XSSFTable> tables = s1.getTables();
  958. assertNotNull(tables);
  959. assertEquals(1, tables.size());
  960. XSSFTable table = tables.get(0);
  961. assertEquals("Tabella1", table.getName());
  962. assertEquals("Tabella1", table.getDisplayName());
  963. // And the others
  964. XSSFSheet s2 = wb.getSheetAt(1);
  965. assertEquals(0, s2.getTables().size());
  966. XSSFSheet s3 = wb.getSheetAt(2);
  967. assertEquals(0, s3.getTables().size());
  968. }
  969. /**
  970. * Test to trigger OOXML-LITE generating to include org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetCalcPr
  971. */
  972. @Test
  973. public void setForceFormulaRecalculation() {
  974. XSSFWorkbook workbook = new XSSFWorkbook();
  975. XSSFSheet sheet = workbook.createSheet("Sheet 1");
  976. // Set
  977. sheet.setForceFormulaRecalculation(true);
  978. assertEquals(true, sheet.getForceFormulaRecalculation());
  979. // calcMode="manual" is unset when forceFormulaRecalculation=true
  980. CTCalcPr calcPr = workbook.getCTWorkbook().addNewCalcPr();
  981. calcPr.setCalcMode(STCalcMode.MANUAL);
  982. sheet.setForceFormulaRecalculation(true);
  983. assertEquals(STCalcMode.AUTO, calcPr.getCalcMode());
  984. // Check
  985. sheet.setForceFormulaRecalculation(false);
  986. assertEquals(false, sheet.getForceFormulaRecalculation());
  987. // Save, re-load, and re-check
  988. workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
  989. sheet = workbook.getSheet("Sheet 1");
  990. assertEquals(false, sheet.getForceFormulaRecalculation());
  991. }
  992. @Test
  993. public void bug54607() {
  994. // run with the file provided in the Bug-Report
  995. runGetTopRow("54607.xlsx", true, 1, 0, 0);
  996. runGetLeftCol("54607.xlsx", true, 0, 0, 0);
  997. // run with some other flie to see
  998. runGetTopRow("54436.xlsx", true, 0);
  999. runGetLeftCol("54436.xlsx", true, 0);
  1000. runGetTopRow("TwoSheetsNoneHidden.xlsx", true, 0, 0);
  1001. runGetLeftCol("TwoSheetsNoneHidden.xlsx", true, 0, 0);
  1002. runGetTopRow("TwoSheetsNoneHidden.xls", false, 0, 0);
  1003. runGetLeftCol("TwoSheetsNoneHidden.xls", false, 0, 0);
  1004. }
  1005. private void runGetTopRow(String file, boolean isXSSF, int... topRows) {
  1006. final Workbook wb;
  1007. if(isXSSF) {
  1008. wb = XSSFTestDataSamples.openSampleWorkbook(file);
  1009. } else {
  1010. wb = HSSFTestDataSamples.openSampleWorkbook(file);
  1011. }
  1012. for (int si = 0; si < wb.getNumberOfSheets(); si++) {
  1013. Sheet sh = wb.getSheetAt(si);
  1014. assertNotNull(sh.getSheetName());
  1015. assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
  1016. }
  1017. // for XSSF also test with SXSSF
  1018. if(isXSSF) {
  1019. Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
  1020. for (int si = 0; si < swb.getNumberOfSheets(); si++) {
  1021. Sheet sh = swb.getSheetAt(si);
  1022. assertNotNull(sh.getSheetName());
  1023. assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
  1024. }
  1025. }
  1026. }
  1027. private void runGetLeftCol(String file, boolean isXSSF, int... topRows) {
  1028. final Workbook wb;
  1029. if(isXSSF) {
  1030. wb = XSSFTestDataSamples.openSampleWorkbook(file);
  1031. } else {
  1032. wb = HSSFTestDataSamples.openSampleWorkbook(file);
  1033. }
  1034. for (int si = 0; si < wb.getNumberOfSheets(); si++) {
  1035. Sheet sh = wb.getSheetAt(si);
  1036. assertNotNull(sh.getSheetName());
  1037. assertEquals("Did not match for sheet " + si, topRows[si], sh.getLeftCol());
  1038. }
  1039. // for XSSF also test with SXSSF
  1040. if(isXSSF) {
  1041. Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
  1042. for (int si = 0; si < swb.getNumberOfSheets(); si++) {
  1043. Sheet sh = swb.getSheetAt(si);
  1044. assertNotNull(sh.getSheetName());
  1045. assertEquals("Did not match for sheet " + si, topRows[si], sh.getLeftCol());
  1046. }
  1047. }
  1048. }
  1049. @Test
  1050. public void showInPaneManyRowsBug55248() {
  1051. XSSFWorkbook workbook = new XSSFWorkbook();
  1052. XSSFSheet sheet = workbook.createSheet("Sheet 1");
  1053. sheet.showInPane(0, 0);
  1054. for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) {
  1055. sheet.createRow(i);
  1056. sheet.showInPane(i, 0);
  1057. // this one fails: sheet.showInPane((short)i, 0);
  1058. }
  1059. int i = 0;
  1060. sheet.showInPane(i, i);
  1061. XSSFWorkbook wb = XSSFTestDataSamples.writeOutAndReadBack(workbook);
  1062. checkRowCount(wb);
  1063. }
  1064. @Test
  1065. public void showInPaneManyRowsBug55248SXSSF() {
  1066. SXSSFWorkbook workbook = new SXSSFWorkbook(new XSSFWorkbook());
  1067. SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("Sheet 1");
  1068. sheet.showInPane(0, 0);
  1069. for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) {
  1070. sheet.createRow(i);
  1071. sheet.showInPane(i, 0);
  1072. // this one fails: sheet.showInPane((short)i, 0);
  1073. }
  1074. int i = 0;
  1075. sheet.showInPane(i, i);
  1076. Workbook wb = SXSSFITestDataProvider.instance.writeOutAndReadBack(workbook);
  1077. checkRowCount(wb);
  1078. }
  1079. private void checkRowCount(Workbook wb) {
  1080. assertNotNull(wb);
  1081. final Sheet sh = wb.getSheet("Sheet 1");
  1082. assertNotNull(sh);
  1083. assertEquals(ROW_COUNT-1, sh.getLastRowNum());
  1084. }
  1085. @Test
  1086. public void bug55745() throws Exception {
  1087. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("55745.xlsx");
  1088. XSSFSheet sheet = wb.getSheetAt(0);
  1089. List<XSSFTable> tables = sheet.getTables();
  1090. /*System.out.println(tables.size());
  1091. for(XSSFTable table : tables) {
  1092. System.out.println("XPath: " + table.getCommonXpath());
  1093. System.out.println("Name: " + table.getName());
  1094. System.out.println("Mapped Cols: " + table.getNumerOfMappedColumns());
  1095. System.out.println("Rowcount: " + table.getRowCount());
  1096. System.out.println("End Cell: " + table.getEndCellReference());
  1097. System.out.println("Start Cell: " + table.getStartCellReference());
  1098. }*/
  1099. assertEquals("Sheet should contain 8 tables", 8, tables.size());
  1100. assertNotNull("Sheet should contain a comments table", sheet.getCommentsTable(false));
  1101. }
  1102. @Test
  1103. public void bug55723b(){
  1104. XSSFWorkbook wb = new XSSFWorkbook();
  1105. Sheet sheet = wb.createSheet();
  1106. // stored with a special name
  1107. assertNull(wb.getBuiltInName(XSSFName.BUILTIN_FILTER_DB, 0));
  1108. CellRangeAddress range = CellRangeAddress.valueOf("A:B");
  1109. AutoFilter filter = sheet.setAutoFilter(range);
  1110. assertNotNull(filter);
  1111. // stored with a special name
  1112. XSSFName name = wb.getBuiltInName(XSSFName.BUILTIN_FILTER_DB, 0);
  1113. assertNotNull(name);
  1114. assertEquals("Sheet0!$A:$B", name.getRefersToFormula());
  1115. range = CellRangeAddress.valueOf("B:C");
  1116. filter = sheet.setAutoFilter(range);
  1117. assertNotNull(filter);
  1118. // stored with a special name
  1119. name = wb.getBuiltInName(XSSFName.BUILTIN_FILTER_DB, 0);
  1120. assertNotNull(name);
  1121. assertEquals("Sheet0!$B:$C", name.getRefersToFormula());
  1122. }
  1123. @Test(timeout=180000)
  1124. public void bug51585(){
  1125. XSSFTestDataSamples.openSampleWorkbook("51585.xlsx");
  1126. }
  1127. private XSSFWorkbook setupSheet(){
  1128. //set up workbook
  1129. XSSFWorkbook wb = new XSSFWorkbook();
  1130. XSSFSheet sheet = wb.createSheet();
  1131. Row row1 = sheet.createRow((short) 0);
  1132. Cell cell = row1.createCell((short) 0);
  1133. cell.setCellValue("Names");
  1134. Cell cell2 = row1.createCell((short) 1);
  1135. cell2.setCellValue("#");
  1136. Row row2 = sheet.createRow((short) 1);
  1137. Cell cell3 = row2.createCell((short) 0);
  1138. cell3.setCellValue("Jane");
  1139. Cell cell4 = row2.createCell((short) 1);
  1140. cell4.setCellValue(3);
  1141. Row row3 = sheet.createRow((short) 2);
  1142. Cell cell5 = row3.createCell((short) 0);
  1143. cell5.setCellValue("John");
  1144. Cell cell6 = row3.createCell((short) 1);
  1145. cell6.setCellValue(3);
  1146. return wb;
  1147. }
  1148. public void testCreateTwoPivotTablesInOneSheet(){
  1149. XSSFWorkbook wb = setupSheet();
  1150. XSSFSheet sheet = wb.getSheetAt(0);
  1151. assertNotNull(wb);
  1152. assertNotNull(sheet);
  1153. XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2"), new CellReference("H5"));
  1154. assertNotNull(pivotTable);
  1155. assertTrue(wb.getPivotTables().size() > 0);
  1156. XSSFPivotTable pivotTable2 = sheet.createPivotTable(new AreaReference("A1:B2"), new CellReference("L5"), sheet);
  1157. assertNotNull(pivotTable2);
  1158. assertTrue(wb.getPivotTables().size() > 1);
  1159. }
  1160. public void testCreateTwoPivotTablesInTwoSheets(){
  1161. XSSFWorkbook wb = setupSheet();
  1162. XSSFSheet sheet = wb.getSheetAt(0);
  1163. assertNotNull(wb);
  1164. assertNotNull(sheet);
  1165. XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2"), new CellReference("H5"));
  1166. assertNotNull(pivotTable);
  1167. assertTrue(wb.getPivotTables().size() > 0);
  1168. assertNotNull(wb);
  1169. XSSFSheet sheet2 = wb.createSheet();
  1170. XSSFPivotTable pivotTable2 = sheet2.createPivotTable(new AreaReference("A1:B2"), new CellReference("H5"), sheet);
  1171. assertNotNull(pivotTable2);
  1172. assertTrue(wb.getPivotTables().size() > 1);
  1173. }
  1174. public void testCreatePivotTable(){
  1175. XSSFWorkbook wb = setupSheet();
  1176. XSSFSheet sheet = wb.getSheetAt(0);
  1177. assertNotNull(wb);
  1178. assertNotNull(sheet);
  1179. XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2"), new CellReference("H5"));
  1180. assertNotNull(pivotTable);
  1181. assertTrue(wb.getPivotTables().size() > 0);
  1182. }
  1183. public void testCreatePivotTableInOtherSheetThanDataSheet(){
  1184. XSSFWorkbook wb = setupSheet();
  1185. XSSFSheet sheet1 = wb.getSheetAt(0);
  1186. XSSFSheet sheet2 = wb.createSheet();
  1187. XSSFPivotTable pivotTable = sheet2.createPivotTable
  1188. (new AreaReference("A1:B2"), new CellReference("H5"), sheet1);
  1189. assertEquals(0, pivotTable.getRowLabelColumns().size());
  1190. assertEquals(1, wb.getPivotTables().size());
  1191. assertEquals(1, sheet1.getPivotTables().size());
  1192. assertEquals(1, sheet2.getPivotTables().size());
  1193. }
  1194. public void testCreatePivotTableInOtherSheetThanDataSheetUsingAreaReference(){
  1195. XSSFWorkbook wb = setupSheet();
  1196. XSSFSheet sheet = wb.getSheetAt(0);
  1197. XSSFSheet sheet2 = wb.createSheet();
  1198. XSSFPivotTable pivotTable = sheet2.createPivotTable
  1199. (new AreaReference(sheet.getSheetName()+"!A$1:B$2"), new CellReference("H5"));
  1200. assertEquals(0, pivotTable.getRowLabelColumns().size());
  1201. }
  1202. public void testCreatePivotTableWithConflictingDataSheets(){
  1203. XSSFWorkbook wb = setupSheet();
  1204. XSSFSheet sheet = wb.getSheetAt(0);
  1205. XSSFSheet sheet2 = wb.createSheet();
  1206. try {
  1207. XSSFPivotTable pivotTable = sheet2.createPivotTable
  1208. (new AreaReference(sheet.getSheetName()+"!A$1:B$2"), new CellReference("H5"), sheet2);
  1209. } catch(IllegalArgumentException e) {
  1210. return;
  1211. }
  1212. fail();
  1213. }
  1214. }