]> source.dussan.org Git - poi.git/commitdiff
Update the CreateTable example to reduce the use of the raw CT classes
authorNick Burch <nick@apache.org>
Wed, 7 Jun 2017 13:35:20 +0000 (13:35 +0000)
committerNick Burch <nick@apache.org>
Wed, 7 Jun 2017 13:35:20 +0000 (13:35 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1797923 13f79535-47bb-0310-9956-ffa450edef68

src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateTable.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTable.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFTable.java

index 056c67fc3fa22f16211fa0a6057af10b02f66b06..a2cc063568c67cc48665233150f1891a7ecf7e15 100644 (file)
@@ -26,11 +26,8 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFTable;
+import org.apache.poi.xssf.usermodel.XSSFTableStyleInfo;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumns;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo;
 
 /**
  * Demonstrates how to create a simple table using Apache POI.
@@ -42,48 +39,52 @@ public class CreateTable {
         Workbook wb = new XSSFWorkbook();
         XSSFSheet sheet = (XSSFSheet) wb.createSheet();
         
-        //Create 
+        // Create 
         XSSFTable table = sheet.createTable();
-        table.setDisplayName("Test");       
-        CTTable cttable = table.getCTTable();
+        table.setName("Test");
+        table.setDisplayName("Test_Table");
         
-        //Style configurations
-        CTTableStyleInfo style = cttable.addNewTableStyleInfo();
+        // For now, create the initial style in a low-level way
+        table.getCTTable().addNewTableStyleInfo();
+        table.getCTTable().getTableStyleInfo().setName("TableStyleMedium2");
+        
+        // Style the table
+        XSSFTableStyleInfo style = (XSSFTableStyleInfo)table.getStyle();
         style.setName("TableStyleMedium2");
         style.setShowColumnStripes(false);
         style.setShowRowStripes(true);
+        style.setFirstColumn(false);
+        style.setLastColumn(false);
+        style.setShowRowStripes(true);
+        style.setShowColumnStripes(true);
         
-        //Set which area the table should be placed in
-        AreaReference reference = new AreaReference(new CellReference(0, 0), 
-                new CellReference(2,2));
-        cttable.setRef(reference.formatAsString());
-        cttable.setId(1);
-        cttable.setName("Test");
-        cttable.setTotalsRowCount(1);
-        
-        CTTableColumns columns = cttable.addNewTableColumns();
-        columns.setCount(3);
-        CTTableColumn column;
+        // Set the values for the table
         XSSFRow row;
         XSSFCell cell;
         for(int i=0; i<3; i++) {
-            //Create column
-            column = columns.addNewTableColumn();
-            column.setName("Column");
-            column.setId(i+1);
-            //Create row
+            // Create row
             row = sheet.createRow(i);
             for(int j=0; j<3; j++) {
-                //Create cell
+                // Create cell
                 cell = row.createCell(j);
                 if(i == 0) {
-                    cell.setCellValue("Column"+j);
+                    cell.setCellValue("Column"+(j+1));
                 } else {
-                    cell.setCellValue("0");
+                    cell.setCellValue((i+1)*(j+1));
                 }
             }
         }
+        // Create the columns
+        table.addColumn();
+        table.addColumn();
+        table.addColumn();
         
+        // Set which area the table should be placed in
+        AreaReference reference = new AreaReference(new CellReference(0, 0), 
+                new CellReference(2,2));
+        table.setCellReferences(reference);
+
+        // Save
         FileOutputStream fileOut = new FileOutputStream("ooxml-table.xlsx");
         wb.write(fileOut);
         fileOut.close();
index 8d62661e68a23037882bae438a2f92988f3e246d..a67a16ad19ddc2361ec8625d96ab1bc4ba1755a2 100644 (file)
@@ -3975,6 +3975,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet  {
        RelationPart rp = createRelationship(XSSFRelation.TABLE, XSSFFactory.getInstance(), tableNumber, false);
        XSSFTable table = rp.getDocumentPart();
        tbl.setId(rp.getRelationship().getId());
+       table.getCTTable().setId(tableNumber);
 
        tables.put(tbl.getId(), table);
 
index 7c7a2e645901f15b6354c962914ff80dfd1edab9..16fae4b4371fa03df6246e978e93100fd080c86d 100644 (file)
@@ -343,6 +343,8 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
      * Does not track updates to underlying changes to CTTable
      * To synchronize with changes to the underlying CTTable,
      * call {@link #updateReferences()}.
+     * 
+     * @since 3.17 beta 1
      */
     public AreaReference getCellReferences() {
         return new AreaReference(
@@ -354,6 +356,8 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
      * Updates the reference for the cells of the table
      * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref)
      * and synchronizes any changes
+     * 
+     * @since 3.17 beta 1
      */
     public void setCellReferences(AreaReference refs) {
         // Strip the Sheet name
index 38585d43b6abefe8bd6b021f55a796e0d2c22ca5..bbf49bc01144af153aef36bf61ad459672e49e9d 100644 (file)
@@ -346,7 +346,7 @@ public final class TestXSSFTable {
         // Setting up the CTTable
         XSSFTable t = s.createTable();
         t.setName("TableTest");
-        t.setDisplayName("CT Table Test");
+        t.setDisplayName("CT_Table_Test");
         t.addColumn();
         t.addColumn();
         t.addColumn();