Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

TestXSSFBugs.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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 java.util.List;
  17. import org.apache.poi.POIXMLDocumentPart;
  18. import org.apache.poi.openxml4j.opc.OPCPackage;
  19. import org.apache.poi.openxml4j.opc.PackagePart;
  20. import org.apache.poi.openxml4j.opc.PackagingURIHelper;
  21. import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues;
  22. import org.apache.poi.xssf.XSSFITestDataProvider;
  23. import org.apache.poi.xssf.XSSFTestDataSamples;
  24. public final class TestXSSFBugs extends BaseTestBugzillaIssues {
  25. public TestXSSFBugs() {
  26. super(XSSFITestDataProvider.instance);
  27. }
  28. /**
  29. * test writing a file with large number of unique strings,
  30. * open resulting file in Excel to check results!
  31. */
  32. public void test15375_2() {
  33. baseTest15375(1000);
  34. }
  35. /**
  36. * Named ranges had the right reference, but
  37. * the wrong sheet name
  38. */
  39. public void test45430() {
  40. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45430.xlsx");
  41. assertFalse(wb.isMacroEnabled());
  42. assertEquals(3, wb.getNumberOfNames());
  43. assertEquals(0, wb.getNameAt(0).getCTName().getLocalSheetId());
  44. assertFalse(wb.getNameAt(0).getCTName().isSetLocalSheetId());
  45. assertEquals("SheetA!$A$1", wb.getNameAt(0).getRefersToFormula());
  46. assertEquals("SheetA", wb.getNameAt(0).getSheetName());
  47. assertEquals(0, wb.getNameAt(1).getCTName().getLocalSheetId());
  48. assertFalse(wb.getNameAt(1).getCTName().isSetLocalSheetId());
  49. assertEquals("SheetB!$A$1", wb.getNameAt(1).getRefersToFormula());
  50. assertEquals("SheetB", wb.getNameAt(1).getSheetName());
  51. assertEquals(0, wb.getNameAt(2).getCTName().getLocalSheetId());
  52. assertFalse(wb.getNameAt(2).getCTName().isSetLocalSheetId());
  53. assertEquals("SheetC!$A$1", wb.getNameAt(2).getRefersToFormula());
  54. assertEquals("SheetC", wb.getNameAt(2).getSheetName());
  55. // Save and re-load, still there
  56. XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  57. assertEquals(3, nwb.getNumberOfNames());
  58. assertEquals("SheetA!$A$1", nwb.getNameAt(0).getRefersToFormula());
  59. }
  60. /**
  61. * We should carry vba macros over after save
  62. */
  63. public void test45431() throws Exception {
  64. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("45431.xlsm");
  65. OPCPackage pkg = wb.getPackage();
  66. assertTrue(wb.isMacroEnabled());
  67. // Check the various macro related bits can be found
  68. PackagePart vba = pkg.getPart(
  69. PackagingURIHelper.createPartName("/xl/vbaProject.bin")
  70. );
  71. assertNotNull(vba);
  72. // And the drawing bit
  73. PackagePart drw = pkg.getPart(
  74. PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
  75. );
  76. assertNotNull(drw);
  77. // Save and re-open, both still there
  78. XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  79. OPCPackage nPkg = nwb.getPackage();
  80. assertTrue(nwb.isMacroEnabled());
  81. vba = nPkg.getPart(
  82. PackagingURIHelper.createPartName("/xl/vbaProject.bin")
  83. );
  84. assertNotNull(vba);
  85. drw = nPkg.getPart(
  86. PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
  87. );
  88. assertNotNull(drw);
  89. // And again, just to be sure
  90. nwb = XSSFTestDataSamples.writeOutAndReadBack(nwb);
  91. nPkg = nwb.getPackage();
  92. assertTrue(nwb.isMacroEnabled());
  93. vba = nPkg.getPart(
  94. PackagingURIHelper.createPartName("/xl/vbaProject.bin")
  95. );
  96. assertNotNull(vba);
  97. drw = nPkg.getPart(
  98. PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml")
  99. );
  100. assertNotNull(drw);
  101. }
  102. public void test47504() {
  103. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("47504.xlsx");
  104. assertEquals(1, wb.getNumberOfSheets());
  105. XSSFSheet sh = wb.getSheetAt(0);
  106. XSSFDrawing drawing = sh.createDrawingPatriarch();
  107. List<POIXMLDocumentPart> rels = drawing.getRelations();
  108. assertEquals(1, rels.size());
  109. assertEquals("Sheet1!A1", rels.get(0).getPackageRelationship().getTargetURI().getFragment());
  110. // And again, just to be sure
  111. wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
  112. assertEquals(1, wb.getNumberOfSheets());
  113. sh = wb.getSheetAt(0);
  114. drawing = sh.createDrawingPatriarch();
  115. rels = drawing.getRelations();
  116. assertEquals(1, rels.size());
  117. assertEquals("Sheet1!A1", rels.get(0).getPackageRelationship().getTargetURI().getFragment());
  118. }
  119. /**
  120. * Excel will sometimes write a button with a textbox
  121. * containing &gt;br&lt; (not closed!).
  122. * Clearly Excel shouldn't do this, but test that we can
  123. * read the file despite the naughtyness
  124. */
  125. public void test49020() throws Exception {
  126. XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx");
  127. }
  128. }