You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/10/17 17:14:03 UTC

svn commit: r705638 [2/2] - in /poi/branches/ooxml/src: examples/src/org/apache/poi/xssf/usermodel/examples/ ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/ ooxml/java/org/apache/poi/ ooxml/java/org/apache/poi/xssf/model/ ooxml/java/org/apache/poi/...

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Fri Oct 17 08:14:00 2008
@@ -19,6 +19,7 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.InputStream;
 import java.util.*;
 import javax.xml.namespace.QName;
 import org.apache.poi.POIXMLDocument;
@@ -30,6 +31,7 @@
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.PackageHelper;
+import org.apache.poi.util.IOUtils;
 import org.apache.poi.xssf.model.*;
 import org.apache.poi.POIXMLException;
 import org.apache.xmlbeans.XmlObject;
@@ -279,6 +281,31 @@
         return imageNumber - 1;
     }
 
+    /**
+     * Adds a picture to the workbook.
+     *
+     * @param is                The sream to read image from
+     * @param format            The format of the picture.
+     *
+     * @return the index to this picture (0 based), the added picture can be obtained from {@link #getAllPictures()} .
+     * @see #PICTURE_TYPE_EMF
+     * @see #PICTURE_TYPE_WMF
+     * @see #PICTURE_TYPE_PICT
+     * @see #PICTURE_TYPE_JPEG
+     * @see #PICTURE_TYPE_PNG
+     * @see #PICTURE_TYPE_DIB
+     * @see #getAllPictures()
+     */
+    public int addPicture(InputStream is, int format) throws IOException {
+        int imageNumber = getAllPictures().size() + 1;
+        XSSFPictureData img = (XSSFPictureData)createRelationship(XSSFPictureData.RELATIONS[format], XSSFFactory.getInstance(), imageNumber, true);
+        OutputStream out = img.getPackagePart().getOutputStream();
+        IOUtils.copy(is, out);
+        out.close();
+        pictures.add(img);
+        return imageNumber - 1;
+    }
+
     public XSSFSheet cloneSheet(int sheetNum) {
         XSSFSheet srcSheet = sheets.get(sheetNum);
         String srcName = getSheetName(sheetNum);

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java Fri Oct 17 08:14:00 2008
@@ -400,13 +400,11 @@
 
     	//BLANK
     	assertEquals(hcell.toString(),xcell.toString());
-    	System.out.println("BLANK==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	//BOOLEAN
     	xcell.setCellValue(true);
     	xcell.setCellType(Cell.CELL_TYPE_BOOLEAN);
     	hcell.setCellValue(true);
     	hcell.setCellType(Cell.CELL_TYPE_BOOLEAN);
-    	System.out.println("BOOLEAN==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
 	//NUMERIC
@@ -415,7 +413,6 @@
     	xcell.setCellType(Cell.CELL_TYPE_NUMERIC);
     	hcell.setCellValue(1234);
     	hcell.setCellType(Cell.CELL_TYPE_NUMERIC);
-    	System.out.println("NUMERIC==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
     	//DATE ********************
@@ -434,7 +431,6 @@
     	hstyle.setDataFormat(hformat.getFormat("YYYY-MM-DD"));
     	hcell.setCellStyle(hstyle);
     	
-    	System.out.println("DATE==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
     	
@@ -443,7 +439,6 @@
     	xcell.setCellType(Cell.CELL_TYPE_STRING);
     	hcell.setCellValue(new HSSFRichTextString("text string"));
     	hcell.setCellType(Cell.CELL_TYPE_STRING);
-    	System.out.println("STRING==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
     	//ERROR
@@ -453,13 +448,11 @@
     	hcell.setCellErrorValue((byte)0);
     	hcell.setCellType(Cell.CELL_TYPE_ERROR);
 
-    	System.out.println("ERROR==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
     	//FORMULA
     	xcell.setCellFormula("A1+B2");
     	hcell.setCellValue("A1+B2");
-    	System.out.println("FORMULA==> xssf="+xcell.toString() + " - hssf="+hcell.toString());
     	assertEquals(hcell.toString(),xcell.toString());
     	
     }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java Fri Oct 17 08:14:00 2008
@@ -67,4 +67,13 @@
         assertEquals(drawingId, sheet.getWorksheet().getDrawing().getId());
 
     }
+    public void testMultipleDrawings(){
+        XSSFWorkbook wb = new XSSFWorkbook();
+        for (int i = 0; i < 3; i++) {
+            XSSFSheet sheet = wb.createSheet();
+            XSSFDrawing drawing = sheet.createDrawingPatriarch();
+        }
+        org.openxml4j.opc.Package pkg = wb.getPackage();
+        assertEquals(3, pkg.getPartsByContentType(XSSFRelation.DRAWINGS.getContentType()).size());
+    }
 }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java Fri Oct 17 08:14:00 2008
@@ -25,6 +25,8 @@
 
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.xssf.model.SharedStringsTable;
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -131,15 +133,15 @@
         XSSFRow row = getSampleRow();
         // I assume that "ht" attribute value is in 'points', please verify that
         // Test that no rowHeight is set
-        assertEquals((short) -1, row.getHeight());
+        assertEquals(row.getSheet().getDefaultRowHeight(), row.getHeight());
         // Set a rowHeight and test the new value
         row.setHeight((short) 240);
         assertEquals((short) 240.0, row.getHeight());
-        assertEquals((float)240.0, row.getHeightInPoints());
+        assertEquals(12.0f, row.getHeightInPoints());
         // Set a new rowHeight in points and test the new value
         row.setHeightInPoints(13);
         assertEquals((float) 13.0, row.getHeightInPoints());
-        assertEquals((short) 13.0, row.getHeight());
+        assertEquals((short)(13.0*20), row.getHeight());
     }
 
     public void testGetSetZeroHeight() throws Exception {
@@ -225,8 +227,7 @@
 
     private static XSSFSheet createParentObjects() {
         XSSFWorkbook wb = new XSSFWorkbook();
-        wb.setSharedStringSource(new SharedStringsTable());
-        return new XSSFSheet(wb);
+        return wb.createSheet();
     }
 
     /**
@@ -298,4 +299,37 @@
         assertEquals(-1, sheet.getRow(0).getLastCellNum());
         assertEquals(-1, sheet.getRow(0).getFirstCellNum());
     }
+
+    public void testRowHeightCompatibility(){
+        Workbook wb1 = new HSSFWorkbook();
+        Workbook wb2 = new XSSFWorkbook();
+
+        Sheet sh1 = wb1.createSheet();
+        Sheet sh2 = wb2.createSheet();
+
+        sh2.setDefaultRowHeight(sh1.getDefaultRowHeight());
+
+        assertEquals(sh1.getDefaultRowHeight(), sh2.getDefaultRowHeight());
+
+        //junit.framework.AssertionFailedError: expected:<12.0> but was:<12.75>
+        //YK: there is a bug in HSSF version, it trunkates decimal part
+        //assertEquals(sh1.getDefaultRowHeightInPoints(), sh2.getDefaultRowHeightInPoints());
+
+        Row row1 = sh1.createRow(0);
+        Row row2 = sh2.createRow(0);
+
+        assertEquals(row1.getHeight(), row2.getHeight());
+        assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
+        row1.setHeight((short)100);
+        row2.setHeight((short)100);
+        assertEquals(row1.getHeight(), row2.getHeight());
+        assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
+
+        row1.setHeightInPoints(25.5f);
+        row2.setHeightInPoints(25.5f);
+        assertEquals(row1.getHeight(), row2.getHeight());
+        assertEquals(row1.getHeightInPoints(), row2.getHeightInPoints());
+
+
+    }
 }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java Fri Oct 17 08:14:00 2008
@@ -29,6 +29,7 @@
 import org.apache.poi.xssf.model.StylesTable;
 import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
 import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
@@ -126,7 +127,7 @@
         assertEquals((float) 18, sheet.getDefaultRowHeightInPoints());
         // Test that defaultRowHeight is a truncated short: E.G. 360inPoints -> 18; 361inPoints -> 18
         sheet.setDefaultRowHeight((short) 361);
-        assertEquals((float) 18, sheet.getDefaultRowHeightInPoints());
+        assertEquals((float)361/20, sheet.getDefaultRowHeightInPoints());
         // Set a new default row height in points and test getting the value in twips
         sheet.setDefaultRowHeightInPoints((short) 17);
         assertEquals((short) 340, sheet.getDefaultRowHeight());
@@ -398,13 +399,13 @@
 
     public void testGetSetColumnWidth() {
         XSSFWorkbook workbook = new XSSFWorkbook();
-        Sheet sheet = workbook.createSheet("Sheet 1");
-        sheet.setColumnWidth((short) 1,(short)  22);
-        assertEquals(22, sheet.getColumnWidth((short) 1));
+        XSSFSheet sheet = workbook.createSheet("Sheet 1");
+        sheet.setColumnWidth(1,  22*256);
+        assertEquals(22*256, sheet.getColumnWidth(1));
 
         // Now check the low level stuff, and check that's all
         //  been set correctly
-        XSSFSheet xs = (XSSFSheet)sheet;
+        XSSFSheet xs = sheet;
         CTWorksheet cts = xs.getWorksheet();
 
         CTCols[] cols_s = cts.getColsArray();
@@ -420,7 +421,7 @@
 
 
         // Now set another
-        sheet.setColumnWidth((short) 3,(short)  33);
+        sheet.setColumnWidth(3, 33*256);
 
         cols_s = cts.getColsArray();
         assertEquals(1, cols_s.length);
@@ -534,7 +535,7 @@
     
     public void testTopRowLeftCol() {
         XSSFWorkbook workbook = new XSSFWorkbook();
-        XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
+        XSSFSheet sheet = workbook.createSheet("Sheet 1");
         sheet.showInPane((short)1, (short)1);
         assertEquals((short) 1, sheet.getTopRow());
         assertEquals((short) 1, sheet.getLeftCol());
@@ -546,7 +547,7 @@
     public void testShiftRows() {
         XSSFWorkbook workbook = new XSSFWorkbook();
         
-        XSSFSheet sheet = (XSSFSheet) createSheet(workbook, "Sheet 1");
+        XSSFSheet sheet = createSheet(workbook, "Sheet 1");
     	sheet.shiftRows(1, 2, 4, true, false);
     	assertEquals((short) 1, sheet.getRow(5).getHeight());
     	assertEquals((short) 2, sheet.getRow(6).getHeight());
@@ -554,7 +555,7 @@
     	assertNull(sheet.getRow(2));
     	assertEquals(8, sheet.getPhysicalNumberOfRows());
 
-        XSSFSheet sheet2 = (XSSFSheet) createSheet(workbook, "Sheet 2");
+        XSSFSheet sheet2 = createSheet(workbook, "Sheet 2");
     	sheet2.shiftRows(1, 5, 3, true, false);
     	assertEquals((short) 1, sheet2.getRow(4).getHeight());
     	assertEquals((short) 2, sheet2.getRow(5).getHeight());
@@ -566,7 +567,7 @@
     	assertNull(sheet2.getRow(3));
     	assertEquals(7, sheet2.getPhysicalNumberOfRows());
 
-        XSSFSheet sheet3 = (XSSFSheet) createSheet(workbook, "Sheet 3");
+        XSSFSheet sheet3 = createSheet(workbook, "Sheet 3");
     	sheet3.shiftRows(5, 7, -3, true, false);
     	assertEquals(5, sheet3.getRow(2).getHeight());
     	assertEquals(6, sheet3.getRow(3).getHeight());
@@ -576,7 +577,7 @@
     	assertNull(sheet3.getRow(7));
     	assertEquals(7, sheet3.getPhysicalNumberOfRows());
 
-        XSSFSheet sheet4 = (XSSFSheet) createSheet(workbook, "Sheet 4");
+        XSSFSheet sheet4 = createSheet(workbook, "Sheet 4");
     	sheet4.shiftRows(5, 7, -2, true, false);
     	assertEquals(5, sheet4.getRow(3).getHeight());
     	assertEquals(6, sheet4.getRow(4).getHeight());
@@ -586,17 +587,17 @@
     	assertEquals(8, sheet4.getPhysicalNumberOfRows());
 
     	// Test without copying rowHeight
-        XSSFSheet sheet5 = (XSSFSheet) createSheet(workbook, "Sheet 5");
+        XSSFSheet sheet5 = createSheet(workbook, "Sheet 5");
     	sheet5.shiftRows(5, 7, -2, false, false);
-    	assertEquals(-1, sheet5.getRow(3).getHeight());
-    	assertEquals(-1, sheet5.getRow(4).getHeight());
-    	assertEquals(-1, sheet5.getRow(5).getHeight());
+    	assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(3).getHeight());
+    	assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(4).getHeight());
+    	assertEquals(sheet5.getDefaultRowHeight(), sheet5.getRow(5).getHeight());
     	assertNull(sheet5.getRow(6));
     	assertNull(sheet5.getRow(7));
     	assertEquals(8, sheet5.getPhysicalNumberOfRows());
 
     	// Test without copying rowHeight and resetting to default height
-        XSSFSheet sheet6 = (XSSFSheet) createSheet(workbook, "Sheet 6");
+        XSSFSheet sheet6 = createSheet(workbook, "Sheet 6");
         sheet6.setDefaultRowHeight((short) 200);
     	sheet6.shiftRows(5, 7, -2, false, true);
     	assertEquals(200, sheet6.getRow(3).getHeight());
@@ -738,7 +739,7 @@
     
 
 	private XSSFSheet createSheet(XSSFWorkbook workbook, String name) {
-        XSSFSheet sheet = (XSSFSheet) workbook.createSheet(name);
+        XSSFSheet sheet = workbook.createSheet(name);
     	Row row0 = sheet.createRow(0);
     	row0.setHeight((short) 1);
     	Row row1 = sheet.createRow(1);
@@ -875,4 +876,29 @@
         assertFalse(sheet.getRowSumsRight());
     }
 
+
+    public void testColumnWidthCompatibility() {
+        Workbook wb1 = new HSSFWorkbook();
+        Workbook wb2 = new XSSFWorkbook();
+
+        Sheet sh1 = wb1.createSheet();
+        Sheet sh2 = wb2.createSheet();
+
+        assertEquals(sh1.getDefaultColumnWidth(), sh2.getDefaultColumnWidth());
+
+        //if column width is not set, HSSF returns a wrong value which does not take into account
+        //margins and borders, it is always less than the actual column width
+        assertEquals(2048, sh1.getColumnWidth(0));
+        assertEquals(2340, sh2.getColumnWidth(0));
+
+        sh1.setDefaultColumnWidth(1000);
+        sh2.setDefaultColumnWidth(1000);
+        assertEquals(1000, sh2.getDefaultColumnWidth());
+        assertEquals(sh1.getDefaultColumnWidth(), sh2.getDefaultColumnWidth());
+
+        sh1.setColumnWidth(0, 500);
+        sh2.setColumnWidth(0, 500);
+        assertEquals(500, sh2.getColumnWidth(0));
+        assertEquals(sh1.getColumnWidth(0), sh2.getColumnWidth(0));
+    }
 }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java Fri Oct 17 08:14:00 2008
@@ -154,16 +154,13 @@
 	/**
 	 * Tests that we can save a new document
 	 */
-	public void testSaveNew() throws IOException {
+	public void testSaveNew() {
 		XSSFWorkbook workbook = new XSSFWorkbook();
 		workbook.createSheet("sheet1");
 		workbook.createSheet("sheet2");
 		workbook.createSheet("sheet3");
-		File file = File.createTempFile("poi-", ".xlsx");
-		System.out.println("Saving newly created file to " + file.getAbsolutePath());
-		OutputStream out = new FileOutputStream(file);
-		workbook.write(out);
-		out.close();
+
+        XSSFTestDataSamples.writeOutAndReadBack(workbook);
 	}
 
 	/**
@@ -258,7 +255,6 @@
 		font.setUnderline(Font.U_DOUBLE);
 		StylesTable styleSource=new StylesTable();
 		long index=styleSource.putFont(font);
-		System.out.println("index="+index);
 		workbook.setStylesSource(styleSource);
 		fontFind=workbook.findFont(Font.BOLDWEIGHT_BOLD, IndexedColors.BLACK.getIndex(), (short)15, "Calibri", false, false, Font.SS_NONE, Font.U_DOUBLE);
 		assertNull(fontFind);

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java?rev=705638&r1=705637&r2=705638&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java Fri Oct 17 08:14:00 2008
@@ -186,9 +186,6 @@
         col9.setMax(27);
         helper.addCleanColIntoCols(cols1, col9);
 
-        if (false) {
-            System.err.println(cols1);
-        }
         // TODO - assert something interesting
         CTCol[] colArray = cols1.getColArray();
         assertEquals(12, colArray.length);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org