Merge Cells or Split Merged Cells"

From Documentation
m (correct highlight (via JWB))
 
(18 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{ZKSpreadsheetEssentialsPageHeader}}
 
{{ZKSpreadsheetEssentialsPageHeader}}
 +
 +
 +
 +
{{Deprecated|url=http://books.zkoss.org/wiki/ZK_Spreadsheet_Essentials}}
  
 
__TOC__
 
__TOC__
  
 
===Purpose===
 
===Purpose===
ZK Spreadsheet support merge cells and unmerge cells.
+
ZK Spreadsheet support merge cells and split merged cells.
 +
 
 +
===Merge cells===
 +
Merge cell can cross rows, also known as vertical merge. <br/>
 +
[[File:ZKSsEss_Spreadsheet_MergeCell.png]]<br/>
  
 
===ZUML===
 
===ZUML===
 +
<source lang="xml" highlight="4,5">
 +
<zk>
 +
<div height="100%" width="100%" apply="org.zkoss.zssessentials.config.MergeCellComposer">
 +
<div>
 +
<button id="mergeCells" label="Merge Cells" mold="trendy"></button>
 +
<button id="splitMergedCells" label="Split Merged Cells" mold="trendy"></button>
 +
</div>
 +
<spreadsheet id="spreadsheet" src="/WEB-INF/excel/config/merge.xlsx"
 +
maxrows="200"
 +
maxcolumns="40"
 +
width="100%"
 +
height="450px"></spreadsheet>
 +
</div>
 +
</zk>
 +
</source>
  
 
===Composer===
 
===Composer===
  
 +
====Range to merge or split====
 +
Use CellSelectionEvent to get current range.
 +
<source lang="java" highlight="7">
 +
Spreadsheet spreadsheet;
 +
int topRow;
 +
int bottomRow;
 +
int leftCol;
 +
int rightCol;
 +
 +
public void onCellSelection$spreadsheet(CellSelectionEvent event) {
 +
topRow = event.getTop();
 +
bottomRow = event.getBottom();
 +
leftCol = event.getLeft();
 +
rightCol = event.getRight();
 +
}
 +
</source>
 +
 +
[[File:ZKSsEss_Spreadsheet_MergeCell_CellSelection.png]]<br/>
 +
 +
====Merge Cells====
 +
Use <javadoc directory="zss" method="merge(java.lang.Boolean)">org.zkoss.zss.model.Range</javadoc>to merge cells. The boolean argument indicates whether to merge cells for each individual rows. <code>true<code> to merge cells for each  row while <code>false</code> indicates merge cells as a whole.
 +
 +
<source lang="java" highlight="6">
 +
public void onClick$mergeCells() {
 +
Ranges.range(spreadsheet.getSelectedSheet(),
 +
topRow,
 +
leftCol,
 +
bottomRow,
 +
rightCol).merge(false);
 +
}
 +
</source>
 +
 +
[[File:ZKSsEss_Spreadsheet_MergeCell_Merge.png]]<br/>
 +
 +
====Split Merged Cells====
 +
<source lang="java" highlight="6">
 +
public void onClick$splitMergedCells() {
 +
Ranges.range(spreadsheet.getSelectedSheet(),
 +
topRow,
 +
leftCol,
 +
bottomRow,
 +
rightCol).unMerge();
 +
}
 +
</source>
 +
 +
[[File:ZKSsEss_Spreadsheet_MergeCell_Split_CellSelection.png]]<br/>
 +
[[File:ZKSsEss_Spreadsheet_MergeCell_Split_Cells.png]]<br/>
 +
 +
View the complete source of ZUML [https://code.google.com/p/zkbooks/source/browse/trunk/zssessentials/examples/WebContent/config/mergeCells.zul mergeCells.zul]
 +
 +
View the complete source of composer [https://code.google.com/p/zkbooks/source/browse/trunk/zssessentials/examples/src/org/zkoss/zssessentials/config/MergeCellComposer.java MergeCellComposer.java]
  
 
=Version History=
 
=Version History=
Line 16: Line 90:
 
! Version !! Date !! Content
 
! Version !! Date !! Content
 
|-
 
|-
| &nbsp;
+
| 2.1.0
| &nbsp;
+
| May, 2011
| &nbsp;
+
| support vertical merge
 
|}
 
|}
  
  
 
{{ZKSpreadsheetEssentialsPageFooter}}
 
{{ZKSpreadsheetEssentialsPageFooter}}

Latest revision as of 12:55, 19 January 2022





Stop.png This article is out of date, please refer to http://books.zkoss.org/wiki/ZK_Spreadsheet_Essentials for more up to date information.

Purpose

ZK Spreadsheet support merge cells and split merged cells.

Merge cells

Merge cell can cross rows, also known as vertical merge.
ZKSsEss Spreadsheet MergeCell.png

ZUML

<zk>
<div height="100%" width="100%" apply="org.zkoss.zssessentials.config.MergeCellComposer">
	<div>
		<button id="mergeCells" label="Merge Cells" mold="trendy"></button>
		<button id="splitMergedCells" label="Split Merged Cells" mold="trendy"></button>
	</div>
	<spreadsheet id="spreadsheet" src="/WEB-INF/excel/config/merge.xlsx"	
				maxrows="200" 
				maxcolumns="40"
				width="100%"
				height="450px"></spreadsheet>
</div>
</zk>

Composer

Range to merge or split

Use CellSelectionEvent to get current range.

Spreadsheet spreadsheet;
int topRow;
int bottomRow;
int leftCol;
int rightCol;

public void onCellSelection$spreadsheet(CellSelectionEvent event) {
	topRow = event.getTop();
	bottomRow = event.getBottom();
	leftCol = event.getLeft();
	rightCol = event.getRight();
}

ZKSsEss Spreadsheet MergeCell CellSelection.png

Merge Cells

Use Range.merge(Boolean)to merge cells. The boolean argument indicates whether to merge cells for each individual rows. true to merge cells for each row while false indicates merge cells as a whole.

public void onClick$mergeCells() {
	Ranges.range(spreadsheet.getSelectedSheet(), 
			topRow, 
			leftCol, 
			bottomRow, 
			rightCol).merge(false);
}

ZKSsEss Spreadsheet MergeCell Merge.png

Split Merged Cells

public void onClick$splitMergedCells() {
	Ranges.range(spreadsheet.getSelectedSheet(), 
			topRow, 
			leftCol, 
			bottomRow, 
			rightCol).unMerge();
}

ZKSsEss Spreadsheet MergeCell Split CellSelection.png
ZKSsEss Spreadsheet MergeCell Split Cells.png

View the complete source of ZUML mergeCells.zul

View the complete source of composer MergeCellComposer.java

Version History

Last Update : 2022/01/19


Version Date Content
2.1.0 May, 2011 support vertical merge


All source code listed in this book is at Github.


Last Update : 2022/01/19

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.