Update the CreateTable example to reduce the use of the raw CT classes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1797923 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2017-06-07 13:35:20 +00:00
parent 7b38f8c5f1
commit 993801aa1c
4 changed files with 35 additions and 29 deletions

View 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.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFTable; import org.apache.poi.xssf.usermodel.XSSFTable;
import org.apache.poi.xssf.usermodel.XSSFTableStyleInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 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. * Demonstrates how to create a simple table using Apache POI.
@ -42,48 +39,52 @@ public class CreateTable {
Workbook wb = new XSSFWorkbook(); Workbook wb = new XSSFWorkbook();
XSSFSheet sheet = (XSSFSheet) wb.createSheet(); XSSFSheet sheet = (XSSFSheet) wb.createSheet();
//Create // Create
XSSFTable table = sheet.createTable(); XSSFTable table = sheet.createTable();
table.setDisplayName("Test"); table.setName("Test");
CTTable cttable = table.getCTTable(); table.setDisplayName("Test_Table");
//Style configurations // For now, create the initial style in a low-level way
CTTableStyleInfo style = cttable.addNewTableStyleInfo(); table.getCTTable().addNewTableStyleInfo();
table.getCTTable().getTableStyleInfo().setName("TableStyleMedium2");
// Style the table
XSSFTableStyleInfo style = (XSSFTableStyleInfo)table.getStyle();
style.setName("TableStyleMedium2"); style.setName("TableStyleMedium2");
style.setShowColumnStripes(false); style.setShowColumnStripes(false);
style.setShowRowStripes(true); style.setShowRowStripes(true);
style.setFirstColumn(false);
style.setLastColumn(false);
style.setShowRowStripes(true);
style.setShowColumnStripes(true);
//Set which area the table should be placed in // Set the values for the table
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;
XSSFRow row; XSSFRow row;
XSSFCell cell; XSSFCell cell;
for(int i=0; i<3; i++) { for(int i=0; i<3; i++) {
//Create column // Create row
column = columns.addNewTableColumn();
column.setName("Column");
column.setId(i+1);
//Create row
row = sheet.createRow(i); row = sheet.createRow(i);
for(int j=0; j<3; j++) { for(int j=0; j<3; j++) {
//Create cell // Create cell
cell = row.createCell(j); cell = row.createCell(j);
if(i == 0) { if(i == 0) {
cell.setCellValue("Column"+j); cell.setCellValue("Column"+(j+1));
} else { } 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"); FileOutputStream fileOut = new FileOutputStream("ooxml-table.xlsx");
wb.write(fileOut); wb.write(fileOut);
fileOut.close(); fileOut.close();

View File

@ -3975,6 +3975,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
RelationPart rp = createRelationship(XSSFRelation.TABLE, XSSFFactory.getInstance(), tableNumber, false); RelationPart rp = createRelationship(XSSFRelation.TABLE, XSSFFactory.getInstance(), tableNumber, false);
XSSFTable table = rp.getDocumentPart(); XSSFTable table = rp.getDocumentPart();
tbl.setId(rp.getRelationship().getId()); tbl.setId(rp.getRelationship().getId());
table.getCTTable().setId(tableNumber);
tables.put(tbl.getId(), table); tables.put(tbl.getId(), table);

View File

@ -343,6 +343,8 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
* Does not track updates to underlying changes to CTTable * Does not track updates to underlying changes to CTTable
* To synchronize with changes to the underlying CTTable, * To synchronize with changes to the underlying CTTable,
* call {@link #updateReferences()}. * call {@link #updateReferences()}.
*
* @since 3.17 beta 1
*/ */
public AreaReference getCellReferences() { public AreaReference getCellReferences() {
return new AreaReference( return new AreaReference(
@ -354,6 +356,8 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
* Updates the reference for the cells of the table * Updates the reference for the cells of the table
* (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref) * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref)
* and synchronizes any changes * and synchronizes any changes
*
* @since 3.17 beta 1
*/ */
public void setCellReferences(AreaReference refs) { public void setCellReferences(AreaReference refs) {
// Strip the Sheet name // Strip the Sheet name

View File

@ -346,7 +346,7 @@ public final class TestXSSFTable {
// Setting up the CTTable // Setting up the CTTable
XSSFTable t = s.createTable(); XSSFTable t = s.createTable();
t.setName("TableTest"); t.setName("TableTest");
t.setDisplayName("CT Table Test"); t.setDisplayName("CT_Table_Test");
t.addColumn(); t.addColumn();
t.addColumn(); t.addColumn();
t.addColumn(); t.addColumn();