New HSSF example.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@800845 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4926b8c44a
commit
91b9065ff6
@ -0,0 +1,569 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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
|
||||||
|
|
||||||
|
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.hssf.usermodel.examples;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class contains code that demonstrates how to insert plain, numbered
|
||||||
|
* and bulleted lists into an Excel spreadsheet cell.
|
||||||
|
*
|
||||||
|
* Look at the code contained in the demonstrateMethodCalls() method. It calls
|
||||||
|
* other methods that create plain, numbered and bulleted single and
|
||||||
|
* multi-level lists. The demonstrateMethodCalls() method appears at the top
|
||||||
|
* of the class definition.
|
||||||
|
*
|
||||||
|
* Though different methods are provided to construct single and multi-level
|
||||||
|
* plain, numbered and bulleted lists, close examination will reveal that they
|
||||||
|
* are not strictly necessary. If the inputs to the listInCell() and
|
||||||
|
* multilLevelListInCell() methods are constructed to include the bullet
|
||||||
|
* character or the item numbers then these methods alone may be sufficient.
|
||||||
|
*
|
||||||
|
* @author Mark Beardsley [msb at apache.org]
|
||||||
|
*/
|
||||||
|
public class InCellLists {
|
||||||
|
|
||||||
|
// This character looks like a solid, black, loser case letter 'o'
|
||||||
|
// positioned up from the base line of the text.
|
||||||
|
private static final char BULLET_CHARACTER = '\u2022';
|
||||||
|
|
||||||
|
// The tab character - \t - cannot be used to create a tab space
|
||||||
|
// within a cell as it is rendered as a square. Therefore, four
|
||||||
|
// spaces are used to simulate that character.
|
||||||
|
private static final String TAB = " ";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call each of the list creation methods.
|
||||||
|
*
|
||||||
|
* @param outputFilename A String that encapsulates the name of and path to
|
||||||
|
* the Excel spreadsheet file this code will create.
|
||||||
|
*/
|
||||||
|
public void demonstrateMethodCalls(String outputFilename) {
|
||||||
|
HSSFWorkbook workbook = null;
|
||||||
|
HSSFSheet sheet = null;
|
||||||
|
HSSFRow row = null;
|
||||||
|
HSSFCell cell = null;
|
||||||
|
File outputFile = null;
|
||||||
|
FileOutputStream fos = null;
|
||||||
|
ArrayList<MultiLevelListItem> multiLevelListItems = null;
|
||||||
|
ArrayList<String> listItems = null;
|
||||||
|
String listItem = null;
|
||||||
|
try {
|
||||||
|
workbook = new HSSFWorkbook();
|
||||||
|
sheet = workbook.createSheet("In Cell Lists");
|
||||||
|
row = sheet.createRow(0);
|
||||||
|
|
||||||
|
// Create a cell at A1 and insert a single, bulleted, item into
|
||||||
|
// that cell.
|
||||||
|
cell = row.createCell(0);
|
||||||
|
this.bulletedItemInCell(workbook, "List Item", cell);
|
||||||
|
|
||||||
|
// Create a cell at A2 and insert a plain list - that is one
|
||||||
|
// whose items are neither bulleted or numbered - into that cell.
|
||||||
|
row = sheet.createRow(1);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
listItems = new ArrayList<String>();
|
||||||
|
listItems.add("List Item One.");
|
||||||
|
listItems.add("List Item Two.");
|
||||||
|
listItems.add("List Item Three.");
|
||||||
|
listItems.add("List Item Four.");
|
||||||
|
this.listInCell(workbook, listItems, cell);
|
||||||
|
// The row height and cell width are set here to ensure that the
|
||||||
|
// list may be seen.
|
||||||
|
row.setHeight((short)1100);
|
||||||
|
sheet.setColumnWidth(0, 9500);
|
||||||
|
|
||||||
|
// Create a cell at A3 and insert a numbered list into that cell.
|
||||||
|
// Note that a couple of items have been added to the listItems
|
||||||
|
// ArrayList
|
||||||
|
row = sheet.createRow(2);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
listItems.add("List Item Five.");
|
||||||
|
listItems.add("List Item Six.");
|
||||||
|
this.numberedListInCell(workbook, listItems, cell, 1, 2);
|
||||||
|
row.setHeight((short)1550);
|
||||||
|
|
||||||
|
// Create a cell at A4 and insert a numbered list into that cell.
|
||||||
|
// Note that a couple of items have been added to the listItems
|
||||||
|
// ArrayList
|
||||||
|
row = sheet.createRow(3);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
listItems.add("List Item Seven.");
|
||||||
|
listItems.add("List Item Eight.");
|
||||||
|
listItems.add("List Item Nine.");
|
||||||
|
listItems.add("List Item Ten.");
|
||||||
|
this.bulletedListInCell(workbook, listItems, cell);
|
||||||
|
row.setHeight((short)2550);
|
||||||
|
|
||||||
|
// Insert a plain, multi-level list into cell A5. Note that
|
||||||
|
// the major difference here is that the list items are passed as
|
||||||
|
// an ArrayList of MultiLevelListItems. Note that an ArrayList
|
||||||
|
// of instances of an inner class was used here in preference to
|
||||||
|
// a Hashtable or HashMap as the ArrayList will preserve the
|
||||||
|
// ordering of the items added to it; the first item added will
|
||||||
|
// be the first item recovered and the last item added, the last
|
||||||
|
// item recovered.
|
||||||
|
row = sheet.createRow(4);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
multiLevelListItems = new ArrayList<MultiLevelListItem>();
|
||||||
|
listItems = new ArrayList<String>();
|
||||||
|
listItems.add("ML List Item One - Sub Item One.");
|
||||||
|
listItems.add("ML List Item One - Sub Item Two.");
|
||||||
|
listItems.add("ML List Item One - Sub Item Three.");
|
||||||
|
listItems.add("ML List Item One - Sub Item Four.");
|
||||||
|
multiLevelListItems.add(new MultiLevelListItem("List Item One.", listItems));
|
||||||
|
// Passing either null or an empty ArrayList will signal that
|
||||||
|
// there are no lower level items associated with the top level
|
||||||
|
// item
|
||||||
|
multiLevelListItems.add(new MultiLevelListItem("List Item Two.", null));
|
||||||
|
multiLevelListItems.add(new MultiLevelListItem("List Item Three.", null));
|
||||||
|
listItems = new ArrayList<String>();
|
||||||
|
listItems.add("ML List Item Four - Sub Item One.");
|
||||||
|
listItems.add("ML List Item Four - Sub Item Two.");
|
||||||
|
listItems.add("ML List Item Four - Sub Item Three.");
|
||||||
|
multiLevelListItems.add(new MultiLevelListItem("List Item Four.", listItems));
|
||||||
|
this.multiLevelListInCell(workbook, multiLevelListItems, cell);
|
||||||
|
row.setHeight((short)2800);
|
||||||
|
|
||||||
|
// Insert a numbered multi-level list into cell A6. Note that the
|
||||||
|
// same ArrayList as constructed for the above plain multi-level
|
||||||
|
// list example will be re-used
|
||||||
|
row = sheet.createRow(5);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
this.multiLevelNumberedListInCell(workbook, multiLevelListItems,
|
||||||
|
cell, 1, 1, 1, 2);
|
||||||
|
row.setHeight((short)2800);
|
||||||
|
|
||||||
|
// Insert a numbered multi-level list into cell A7. Note that the
|
||||||
|
// same ArrayList as constructed for the plain multi-level list
|
||||||
|
// example will be re-used
|
||||||
|
row = sheet.createRow(6);
|
||||||
|
cell = row.createCell(0);
|
||||||
|
this.multiLevelBulletedListInCell(workbook, multiLevelListItems, cell);
|
||||||
|
row.setHeight((short)2800);
|
||||||
|
|
||||||
|
// Save the completed workbook
|
||||||
|
outputFile = new File(outputFilename);
|
||||||
|
fos = new FileOutputStream(outputFile);
|
||||||
|
workbook.write(fos);
|
||||||
|
}
|
||||||
|
catch(FileNotFoundException fnfEx) {
|
||||||
|
System.out.println("Caught a: " + fnfEx.getClass().getName());
|
||||||
|
System.out.println("Message: " + fnfEx.getMessage());
|
||||||
|
System.out.println("Stacktrace follows...........");
|
||||||
|
fnfEx.printStackTrace(System.out);
|
||||||
|
}
|
||||||
|
catch(IOException ioEx) {
|
||||||
|
System.out.println("Caught a: " + ioEx.getClass().getName());
|
||||||
|
System.out.println("Message: " + ioEx.getMessage());
|
||||||
|
System.out.println("Stacktrace follows...........");
|
||||||
|
ioEx.printStackTrace(System.out);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if(fos != null) {
|
||||||
|
try {
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
catch(IOException ioEx) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts a single bulleted item into a cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param listItem An instance of the String class encapsulating the
|
||||||
|
* items text.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list item
|
||||||
|
* will be written.
|
||||||
|
*/
|
||||||
|
public void bulletedItemInCell(HSSFWorkbook workbook, String listItem, HSSFCell cell) {
|
||||||
|
// A format String must be built to ensure that the contents of the
|
||||||
|
// cell appear as a bulleted item.
|
||||||
|
HSSFDataFormat format = workbook.createDataFormat();
|
||||||
|
String formatString = InCellLists.BULLET_CHARACTER + " @";
|
||||||
|
int formatIndex = format.getFormat(formatString);
|
||||||
|
|
||||||
|
// Construct an HSSFCellStyle and set it's data formt to use the
|
||||||
|
// object created above.
|
||||||
|
HSSFCellStyle bulletStyle = workbook.createCellStyle();
|
||||||
|
bulletStyle.setDataFormat((short)formatIndex);
|
||||||
|
|
||||||
|
// Set the cells contents and style.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(listItem));
|
||||||
|
cell.setCellStyle(bulletStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts a list of plain items - that is items that are neither
|
||||||
|
* numbered or bulleted - into a single cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param listItems An ArrayList whose elements encapsulate the text for
|
||||||
|
* the list's items.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
*/
|
||||||
|
public void listInCell(HSSFWorkbook workbook, ArrayList<String> listItems, HSSFCell cell) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
for(String listItem : listItems) {
|
||||||
|
buffer.append(listItem);
|
||||||
|
buffer.append("\n");
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts a numbered list into a single cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param listItems An ArrayList whose elements encapsulate the text for
|
||||||
|
* the lists items.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
* @param startingValue A primitive int containing the number for the first
|
||||||
|
* item in the list.
|
||||||
|
* @param increment A primitive int containing the value that should be used
|
||||||
|
* to calculate subsequent item numbers.
|
||||||
|
*/
|
||||||
|
public void numberedListInCell(HSSFWorkbook workbook,
|
||||||
|
ArrayList<String> listItems,
|
||||||
|
HSSFCell cell,
|
||||||
|
int startingValue,
|
||||||
|
int increment) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
int itemNumber = startingValue;
|
||||||
|
// Note that again, an HSSFCellStye object is required and that
|
||||||
|
// it's wrap text property should be set to 'true'
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
// Note that the basic method is identical to the listInCell() method
|
||||||
|
// with one difference; a number prefixed to the items text.
|
||||||
|
for(String listItem : listItems) {
|
||||||
|
buffer.append(String.valueOf(itemNumber) + ". ");
|
||||||
|
buffer.append(listItem);
|
||||||
|
buffer.append("\n");
|
||||||
|
itemNumber += increment;
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert a bulleted list into a cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param listItems An ArrayList whose elements encapsulate the text for
|
||||||
|
* the lists items.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
*/
|
||||||
|
public void bulletedListInCell(HSSFWorkbook workbook,
|
||||||
|
ArrayList<String> listItems,
|
||||||
|
HSSFCell cell) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
// Note that again, an HSSFCellStye object is required and that
|
||||||
|
// it's wrap text property should be set to 'true'
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
// Note that the basic method is identical to the listInCell() method
|
||||||
|
// with one difference; the bullet character prefixed to the items text.
|
||||||
|
for(String listItem : listItems) {
|
||||||
|
buffer.append(InCellLists.BULLET_CHARACTER + " ");
|
||||||
|
buffer.append(listItem);
|
||||||
|
buffer.append("\n");
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert a multi-level list into a cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param multiLevelListItems An ArrayList whose elements contain instances
|
||||||
|
* of the MultiLevelListItem class. Each element
|
||||||
|
* encapsulates the text for the high level item
|
||||||
|
* along with an ArrayList. Each element of this
|
||||||
|
* ArrayList encapsulates the text for a lower
|
||||||
|
* level item.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
*/
|
||||||
|
public void multiLevelListInCell(HSSFWorkbook workbook,
|
||||||
|
ArrayList<MultiLevelListItem> multiLevelListItems,
|
||||||
|
HSSFCell cell) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
ArrayList<String> lowerLevelItems = null;
|
||||||
|
// Note that again, an HSSFCellStye object is required and that
|
||||||
|
// it's wrap text property should be set to 'true'
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
// Step through the ArrayList of MultilLevelListItem instances.
|
||||||
|
for(MultiLevelListItem multiLevelListItem : multiLevelListItems) {
|
||||||
|
// For each element in the ArrayList, get the text for the high
|
||||||
|
// level list item......
|
||||||
|
buffer.append(multiLevelListItem.getItemText());
|
||||||
|
buffer.append("\n");
|
||||||
|
// and then an ArrayList whose elements encapsulate the text
|
||||||
|
// for the lower level list items.
|
||||||
|
lowerLevelItems = multiLevelListItem.getLowerLevelItems();
|
||||||
|
if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
|
||||||
|
for(String item : lowerLevelItems) {
|
||||||
|
buffer.append(InCellLists.TAB);
|
||||||
|
buffer.append(item);
|
||||||
|
buffer.append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert a multi-level list into a cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param multiLevelListItems An ArrayList whose elements contain instances
|
||||||
|
* of the MultiLevelListItem class. Each element
|
||||||
|
* encapsulates the text for the high level item
|
||||||
|
* along with an ArrayList. Each element of this
|
||||||
|
* ArrayList encapsulates the text for a lower
|
||||||
|
* level item.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
* @param highLevelStartingValue A primitive int containing the number
|
||||||
|
* for the first high level item in the list.
|
||||||
|
* @param highLevelIncrement A primitive int containing the value that
|
||||||
|
* should be used to calculate the number of
|
||||||
|
* subsequent high level item.
|
||||||
|
* @param lowLevelStartingValue A primitive int will containing the number
|
||||||
|
* for the first low level item associated
|
||||||
|
* with a high level item.
|
||||||
|
* @param lowLevelIncrement A primitive int containing the value that
|
||||||
|
* should be used to calculate the number of
|
||||||
|
* subsequent low level item.
|
||||||
|
*/
|
||||||
|
public void multiLevelNumberedListInCell(HSSFWorkbook workbook,
|
||||||
|
ArrayList<MultiLevelListItem> multiLevelListItems,
|
||||||
|
HSSFCell cell,
|
||||||
|
int highLevelStartingValue,
|
||||||
|
int highLevelIncrement,
|
||||||
|
int lowLevelStartingValue,
|
||||||
|
int lowLevelIncrement) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
int highLevelItemNumber = highLevelStartingValue;
|
||||||
|
int lowLevelItemNumber = 0;
|
||||||
|
ArrayList<String> lowerLevelItems = null;
|
||||||
|
// Note that again, an HSSFCellStye object is required and that
|
||||||
|
// it's wrap text property should be set to 'true'
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
// Step through the ArrayList of MultilLevelListItem instances.
|
||||||
|
for(MultiLevelListItem multiLevelListItem : multiLevelListItems) {
|
||||||
|
// For each element in the ArrayList, get the text for the high
|
||||||
|
// level list item......
|
||||||
|
buffer.append(String.valueOf(highLevelItemNumber));
|
||||||
|
buffer.append(". ");
|
||||||
|
buffer.append(multiLevelListItem.getItemText());
|
||||||
|
buffer.append("\n");
|
||||||
|
// and then an ArrayList whose elements encapsulate the text
|
||||||
|
// for the lower level list items.
|
||||||
|
lowerLevelItems = multiLevelListItem.getLowerLevelItems();
|
||||||
|
if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
|
||||||
|
lowLevelItemNumber = lowLevelStartingValue;
|
||||||
|
for(String item : lowerLevelItems) {
|
||||||
|
buffer.append(InCellLists.TAB);
|
||||||
|
buffer.append(String.valueOf(highLevelItemNumber));
|
||||||
|
buffer.append(".");
|
||||||
|
buffer.append(String.valueOf(lowLevelItemNumber));
|
||||||
|
buffer.append(" ");
|
||||||
|
buffer.append(item);
|
||||||
|
buffer.append("\n");
|
||||||
|
lowLevelItemNumber += lowLevelIncrement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
highLevelItemNumber += highLevelIncrement;
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert a bulleted multi-level list into a cell.
|
||||||
|
*
|
||||||
|
* @param workbook A reference to the HSSFWorkbook that 'contains' the
|
||||||
|
* cell.
|
||||||
|
* @param multiLevelListItems An ArrayList whose elements contain instances
|
||||||
|
* of the MultiLevelListItem class. Each element
|
||||||
|
* encapsulates the text for the high level item
|
||||||
|
* along with an ArrayList. Each element of this
|
||||||
|
* ArrayList encapsulates the text for a lower
|
||||||
|
* level item.
|
||||||
|
* @param cell An instance of the HSSFCell class that encapsulates a
|
||||||
|
* reference to the spreadsheet cell into which the list
|
||||||
|
* will be written.
|
||||||
|
*/
|
||||||
|
public void multiLevelBulletedListInCell(HSSFWorkbook workbook,
|
||||||
|
ArrayList<MultiLevelListItem> multiLevelListItems,
|
||||||
|
HSSFCell cell) {
|
||||||
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
ArrayList<String> lowerLevelItems = null;
|
||||||
|
// Note that again, an HSSFCellStye object is required and that
|
||||||
|
// it's wrap text property should be set to 'true'
|
||||||
|
HSSFCellStyle wrapStyle = workbook.createCellStyle();
|
||||||
|
wrapStyle.setWrapText(true);
|
||||||
|
// Step through the ArrayList of MultilLevelListItem instances.
|
||||||
|
for(MultiLevelListItem multiLevelListItem : multiLevelListItems) {
|
||||||
|
// For each element in the ArrayList, get the text for the high
|
||||||
|
// level list item......
|
||||||
|
buffer.append(InCellLists.BULLET_CHARACTER);
|
||||||
|
buffer.append(" ");
|
||||||
|
buffer.append(multiLevelListItem.getItemText());
|
||||||
|
buffer.append("\n");
|
||||||
|
// and then an ArrayList whose elements encapsulate the text
|
||||||
|
// for the lower level list items.
|
||||||
|
lowerLevelItems = multiLevelListItem.getLowerLevelItems();
|
||||||
|
if(!(lowerLevelItems == null) && !(lowerLevelItems.isEmpty())) {
|
||||||
|
for(String item : lowerLevelItems) {
|
||||||
|
buffer.append(InCellLists.TAB);
|
||||||
|
buffer.append(InCellLists.BULLET_CHARACTER);
|
||||||
|
buffer.append(" ");
|
||||||
|
buffer.append(item);
|
||||||
|
buffer.append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The StringBuffer's contents are the source for the contents
|
||||||
|
// of the cell.
|
||||||
|
cell.setCellValue(new HSSFRichTextString(buffer.toString().trim()));
|
||||||
|
cell.setCellStyle(wrapStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The main entry point to the program. Demonstrates how to call the method
|
||||||
|
* that will create an Excel workbook containing many different sorts of
|
||||||
|
* lists.
|
||||||
|
*
|
||||||
|
* @param args the command line arguments.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new InCellLists().demonstrateMethodCalls("C:/temp/Latest In Cell List.xls");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An instance of this inner class models an item or element in a
|
||||||
|
* multi-level list. Each multi-level list item consists of the text for the
|
||||||
|
* high level items and an ArrayList containing the text for each of the
|
||||||
|
* associated lower level items. When written into a cell, each multi-level
|
||||||
|
* list item will have this general appearance.
|
||||||
|
*
|
||||||
|
* Item One
|
||||||
|
* Sub Item One.
|
||||||
|
* Sub Item Two.
|
||||||
|
* Item Two
|
||||||
|
* Sub Item One.
|
||||||
|
* Sub Item Two.
|
||||||
|
* etc.
|
||||||
|
*
|
||||||
|
* It would be quite possible to modify this class to model much more
|
||||||
|
* complex list structures descending through two, three or even more
|
||||||
|
* levels.
|
||||||
|
*/
|
||||||
|
public final class MultiLevelListItem {
|
||||||
|
|
||||||
|
private String itemText = null;
|
||||||
|
private ArrayList<String> lowerLevelItems = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new instance of the MultiLevelListItem class using the
|
||||||
|
* following parameters.
|
||||||
|
*
|
||||||
|
* @param itemText A String that encapsulates the text for the high
|
||||||
|
* level list item.
|
||||||
|
* @param lowerLevelItems An ArrayList whose elements encapsulate the
|
||||||
|
* text for the associated lower level list
|
||||||
|
* items.
|
||||||
|
*/
|
||||||
|
public MultiLevelListItem(String itemText, ArrayList<String> lowerLevelItems) {
|
||||||
|
this.itemText = itemText;
|
||||||
|
this.lowerLevelItems = lowerLevelItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text for the high level list item.
|
||||||
|
*
|
||||||
|
* @return A String that encapsulates the text for the high level list
|
||||||
|
* item.
|
||||||
|
*/
|
||||||
|
public String getItemText() {
|
||||||
|
return(this.itemText);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text for the associated lower level list items.
|
||||||
|
*
|
||||||
|
* @return An ArrayList whose elements each encapsulate the text for a
|
||||||
|
* single associated lower level list item.
|
||||||
|
*/
|
||||||
|
public ArrayList<String> getLowerLevelItems() {
|
||||||
|
return(this.lowerLevelItems);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user