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:
parent
7b38f8c5f1
commit
993801aa1c
@ -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();
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user