mirror of https://github.com/apache/poi.git
Added Christian's Centre Across Selection code.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@948709 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
63793d2fa5
commit
3a19c5bc19
|
@ -1,42 +1,50 @@
|
|||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.xssf.usermodel.examples;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.xssf.usermodel.*;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTRowImpl;
|
||||
|
||||
/**
|
||||
* Shows how various alignment options work.
|
||||
*
|
||||
* Modified by Cristian Petrula, Romania on May 26, 2010
|
||||
* New method was added centerAcrossSelection to center a column content over
|
||||
* one selection using ALIGN_CENTER_SELECTION
|
||||
* To create this method example was change for XSSF only and the previous
|
||||
* AligningCells.java example has been moved into the SS examples folder.
|
||||
*/
|
||||
public class AligningCells {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
|
||||
public static void main(String[] args) throws IOException {
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
|
||||
Sheet sheet = wb.createSheet();
|
||||
Row row = sheet.createRow((short) 2);
|
||||
XSSFSheet sheet = wb.createSheet();
|
||||
XSSFRow row = sheet.createRow((short) 2);
|
||||
row.setHeightInPoints(30);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
//column width is set in units of 1/256th of a character width
|
||||
sheet.setColumnWidth(i, 256*15);
|
||||
sheet.setColumnWidth(i, 256 * 15);
|
||||
}
|
||||
|
||||
createCell(wb, row, (short) 0, XSSFCellStyle.ALIGN_CENTER, XSSFCellStyle.VERTICAL_BOTTOM);
|
||||
|
@ -47,6 +55,10 @@ public class AligningCells {
|
|||
createCell(wb, row, (short) 5, XSSFCellStyle.ALIGN_LEFT, XSSFCellStyle.VERTICAL_TOP);
|
||||
createCell(wb, row, (short) 6, XSSFCellStyle.ALIGN_RIGHT, XSSFCellStyle.VERTICAL_TOP);
|
||||
|
||||
//center text over B4, C4, D4
|
||||
row = sheet.createRow((short) 3);
|
||||
centerAcrossSelection(wb, row, (short) 1, (short) 3, XSSFCellStyle.VERTICAL_CENTER);
|
||||
|
||||
// Write the output to a file
|
||||
FileOutputStream fileOut = new FileOutputStream("xssf-align.xlsx");
|
||||
wb.write(fileOut);
|
||||
|
@ -61,12 +73,57 @@ public class AligningCells {
|
|||
* @param column the column number to create the cell in
|
||||
* @param halign the horizontal alignment for the cell.
|
||||
*/
|
||||
private static void createCell(Workbook wb, Row row, short column, short halign, short valign) {
|
||||
Cell cell = row.createCell(column);
|
||||
private static void createCell(XSSFWorkbook wb, XSSFRow row, short column,
|
||||
short halign, short valign) {
|
||||
XSSFCell cell = row.createCell(column);
|
||||
cell.setCellValue(new XSSFRichTextString("Align It"));
|
||||
CellStyle cellStyle = wb.createCellStyle();
|
||||
cellStyle.setAlignment(halign);
|
||||
cellStyle.setVerticalAlignment(valign);
|
||||
cell.setCellStyle(cellStyle);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Center a text over multiple columns using ALIGN_CENTER_SELECTION
|
||||
*
|
||||
* @param wb the workbook
|
||||
* @param row the row to create the cell in
|
||||
* @param start_column the column number to create the cell in and where the selection starts
|
||||
* @param end_column the column number where the selection ends
|
||||
* @param valign the horizontal alignment for the cell.
|
||||
*
|
||||
* @author Cristian Petrula, Romania
|
||||
*/
|
||||
private static void centerAcrossSelection(XSSFWorkbook wb, XSSFRow row,
|
||||
short start_column, short end_column, short valign) {
|
||||
|
||||
// Create cell style with ALIGN_CENTER_SELECTION
|
||||
XSSFCellStyle cellStyle = wb.createCellStyle();
|
||||
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER_SELECTION);
|
||||
cellStyle.setVerticalAlignment(valign);
|
||||
|
||||
// Create cells over the selected area
|
||||
for (int i = start_column; i <= end_column; i++) {
|
||||
XSSFCell cell = row.createCell(i);
|
||||
cell.setCellStyle(cellStyle);
|
||||
}
|
||||
|
||||
// Set value to the first cell
|
||||
XSSFCell cell = row.getCell(start_column);
|
||||
cell.setCellValue(new XSSFRichTextString("Align It"));
|
||||
|
||||
// Make the selection
|
||||
CTRowImpl ctRow = (CTRowImpl) row.getCTRow();
|
||||
List spanList = new ArrayList();
|
||||
|
||||
// Add object with format start_coll:end_coll. For example 1:3 will span from
|
||||
// cell 1 to cell 3, where the column index starts with 0
|
||||
//
|
||||
// You can add multiple spans for one row
|
||||
Object span = start_column + ":" + end_column;
|
||||
spanList.add(span);
|
||||
|
||||
//add spns to the row
|
||||
ctRow.setSpans(spanList);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue