2003-03-06 15:41:17 -05:00
|
|
|
|
|
|
|
/* ====================================================================
|
|
|
|
* The Apache Software License, Version 1.1
|
|
|
|
*
|
2003-04-30 00:39:21 -04:00
|
|
|
* Copyright (c) 2003 The Apache Software Foundation. All rights
|
2003-03-06 15:41:17 -05:00
|
|
|
* reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
*
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
*
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in
|
|
|
|
* the documentation and/or other materials provided with the
|
|
|
|
* distribution.
|
|
|
|
*
|
|
|
|
* 3. The end-user documentation included with the redistribution,
|
|
|
|
* if any, must include the following acknowledgment:
|
|
|
|
* "This product includes software developed by the
|
|
|
|
* Apache Software Foundation (http://www.apache.org/)."
|
|
|
|
* Alternately, this acknowledgment may appear in the software itself,
|
|
|
|
* if and wherever such third-party acknowledgments normally appear.
|
|
|
|
*
|
|
|
|
* 4. The names "Apache" and "Apache Software Foundation" and
|
|
|
|
* "Apache POI" must not be used to endorse or promote products
|
|
|
|
* derived from this software without prior written permission. For
|
|
|
|
* written permission, please contact apache@apache.org.
|
|
|
|
*
|
|
|
|
* 5. Products derived from this software may not be called "Apache",
|
|
|
|
* "Apache POI", nor may "Apache" appear in their name, without
|
|
|
|
* prior written permission of the Apache Software Foundation.
|
2002-04-27 09:18:57 -04:00
|
|
|
*
|
2003-03-06 15:41:17 -05:00
|
|
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
|
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
|
|
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
|
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
|
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
* SUCH DAMAGE.
|
|
|
|
* ====================================================================
|
|
|
|
*
|
|
|
|
* This software consists of voluntary contributions made by many
|
|
|
|
* individuals on behalf of the Apache Software Foundation. For more
|
|
|
|
* information on the Apache Software Foundation, please see
|
|
|
|
* <http://www.apache.org/>.
|
2002-04-27 09:18:57 -04:00
|
|
|
*/
|
|
|
|
|
|
|
|
package org.apache.poi.hssf.usermodel;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
import java.io.FileOutputStream;
|
|
|
|
import java.io.IOException;
|
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
import junit.framework.TestCase;
|
|
|
|
|
|
|
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
|
|
|
|
2002-04-27 09:18:57 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @author ROMANL
|
|
|
|
* @author Andrew C. Oliver (acoliver at apache dot org)
|
2003-03-06 15:41:17 -05:00
|
|
|
* @author Danny Mui (danny at muibros.com)
|
2002-04-27 09:18:57 -04:00
|
|
|
*/
|
|
|
|
public class TestNamedRange
|
|
|
|
extends TestCase {
|
|
|
|
|
|
|
|
public TestNamedRange(String testName) {
|
|
|
|
super(testName);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(java.lang.String[] args) {
|
|
|
|
String filename = System.getProperty("HSSF.testdata.path");
|
|
|
|
|
|
|
|
// assume andy is running this in the debugger
|
|
|
|
if (filename == null)
|
|
|
|
{
|
|
|
|
if (args != null && args.length == 1) {
|
|
|
|
System.setProperty(
|
|
|
|
"HSSF.testdata.path",
|
|
|
|
args[0]);
|
|
|
|
} else {
|
|
|
|
System.err.println("Geesh, no HSSF.testdata.path system " +
|
|
|
|
"property, no command line arg with the path "+
|
|
|
|
"what do you expect me to do, guess where teh data " +
|
|
|
|
"files are? Sorry, I give up!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
junit.textui.TestRunner.run(TestNamedRange.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Test of TestCase method, of class test.RangeTest. */
|
|
|
|
public void testNamedRange()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
FileInputStream fis = null;
|
|
|
|
POIFSFileSystem fs = null;
|
|
|
|
HSSFWorkbook wb = null;
|
|
|
|
|
|
|
|
String filename = System.getProperty("HSSF.testdata.path");
|
|
|
|
|
|
|
|
filename = filename + "/Simple.xls";
|
|
|
|
|
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
fis = new FileInputStream(filename);
|
|
|
|
fs = new POIFSFileSystem(fis);
|
|
|
|
wb = new HSSFWorkbook(fs);
|
2002-04-27 09:18:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
//Creating new Named Range
|
|
|
|
HSSFName newNamedRange = wb.createName();
|
|
|
|
|
|
|
|
//Getting Sheet Name for the reference
|
|
|
|
String sheetName = wb.getSheetName(0);
|
|
|
|
|
|
|
|
//Setting its name
|
|
|
|
newNamedRange.setNameName("RangeTest");
|
|
|
|
//Setting its reference
|
2003-03-06 15:41:17 -05:00
|
|
|
newNamedRange.setReference(sheetName + "!$D$4:$E$8");
|
2002-04-27 09:18:57 -04:00
|
|
|
|
|
|
|
//Getting NAmed Range
|
|
|
|
HSSFName namedRange1 = wb.getNameAt(0);
|
|
|
|
//Getting it sheet name
|
|
|
|
sheetName = namedRange1.getSheetName();
|
|
|
|
//Getting its reference
|
|
|
|
String referece = namedRange1.getReference();
|
2003-02-06 05:29:45 -05:00
|
|
|
|
|
|
|
// sanity check
|
|
|
|
SanityChecker c = new SanityChecker();
|
|
|
|
c.checkHSSFWorkbook(wb);
|
|
|
|
|
2002-04-27 09:18:57 -04:00
|
|
|
File file = File.createTempFile("testNamedRange",
|
|
|
|
".xls");
|
|
|
|
|
|
|
|
FileOutputStream fileOut = new FileOutputStream(file);
|
|
|
|
wb.write(fileOut);
|
|
|
|
fis.close();
|
|
|
|
fileOut.close();
|
2002-07-01 13:29:31 -04:00
|
|
|
|
|
|
|
assertTrue("file exists",file.exists());
|
|
|
|
|
|
|
|
FileInputStream in = new FileInputStream(file);
|
|
|
|
wb = new HSSFWorkbook(in);
|
|
|
|
HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
|
|
|
|
assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
|
2003-03-06 15:41:17 -05:00
|
|
|
assertEquals(wb.getSheetName(0)+"!$D$4:$E$8", nm.getReference());
|
|
|
|
|
2002-07-01 13:29:31 -04:00
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Reads an excel file already containing a named range.
|
|
|
|
* <p>
|
|
|
|
* Addresses Bug <a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9632" target="_bug">#9632</a>
|
|
|
|
*/
|
|
|
|
public void testNamedRead() throws IOException
|
|
|
|
{
|
|
|
|
FileInputStream fis = null;
|
|
|
|
POIFSFileSystem fs = null;
|
|
|
|
HSSFWorkbook wb = null;
|
|
|
|
|
|
|
|
String filename = System.getProperty("HSSF.testdata.path");
|
|
|
|
|
|
|
|
filename = filename + "/namedinput.xls";
|
|
|
|
|
|
|
|
|
|
|
|
fis = new FileInputStream(filename);
|
|
|
|
fs = new POIFSFileSystem(fis);
|
|
|
|
wb = new HSSFWorkbook(fs);
|
|
|
|
|
|
|
|
//Get index of the namedrange with the name = "NamedRangeName" , which was defined in input.xls as A1:D10
|
|
|
|
int NamedRangeIndex = wb.getNameIndex("NamedRangeName");
|
|
|
|
|
|
|
|
//Getting NAmed Range
|
|
|
|
HSSFName namedRange1 = wb.getNameAt(NamedRangeIndex);
|
|
|
|
String sheetName = wb.getSheetName(0);
|
|
|
|
|
|
|
|
//Getting its reference
|
|
|
|
String reference = namedRange1.getReference();
|
|
|
|
|
|
|
|
fis.close();
|
|
|
|
|
|
|
|
assertEquals(sheetName+"!$A$1:$D$10", reference);
|
|
|
|
|
|
|
|
HSSFName namedRange2 = wb.getNameAt(1);
|
|
|
|
|
|
|
|
assertEquals(sheetName+"!$D$17:$G$27", namedRange2.getReference());
|
|
|
|
assertEquals("SecondNamedRange", namedRange2.getNameName());
|
|
|
|
|
|
|
|
}
|
2002-07-01 13:29:31 -04:00
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
/**
|
|
|
|
* Reads an excel file already containing a named range and updates it
|
|
|
|
* <p>
|
|
|
|
* Addresses Bug <a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16411" target="_bug">#16411</a>
|
|
|
|
*/
|
|
|
|
public void testNamedReadModify() throws IOException
|
|
|
|
{
|
|
|
|
FileInputStream fis = null;
|
|
|
|
POIFSFileSystem fs = null;
|
|
|
|
HSSFWorkbook wb = null;
|
|
|
|
|
|
|
|
String filename = System.getProperty("HSSF.testdata.path");
|
|
|
|
|
|
|
|
filename = filename + "/namedinput.xls";
|
|
|
|
|
|
|
|
|
|
|
|
fis = new FileInputStream(filename);
|
|
|
|
fs = new POIFSFileSystem(fis);
|
|
|
|
wb = new HSSFWorkbook(fs);
|
|
|
|
|
|
|
|
|
|
|
|
HSSFName name = wb.getNameAt(0);
|
|
|
|
String sheetName = wb.getSheetName(0);
|
|
|
|
|
|
|
|
assertEquals(sheetName+"!$A$1:$D$10", name.getReference());
|
|
|
|
|
|
|
|
name = wb.getNameAt(1);
|
|
|
|
String newReference = sheetName +"!$A$1:$C$36";
|
|
|
|
|
|
|
|
name.setReference(newReference);
|
|
|
|
assertEquals(newReference, name.getReference());
|
|
|
|
|
2002-04-27 09:18:57 -04:00
|
|
|
}
|
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
/**
|
|
|
|
* Test that multiple named ranges can be added written and read
|
|
|
|
*/
|
|
|
|
public void testMultipleNamedWrite()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
HSSFWorkbook wb = new HSSFWorkbook();
|
|
|
|
|
|
|
|
|
|
|
|
HSSFSheet sheet = wb.createSheet("Sheet1");
|
|
|
|
String sheetName = wb.getSheetName(0);
|
|
|
|
|
|
|
|
assertEquals("Sheet1", sheetName);
|
|
|
|
|
|
|
|
//Creating new Named Range
|
|
|
|
HSSFName newNamedRange = wb.createName();
|
|
|
|
|
|
|
|
newNamedRange.setNameName("RangeTest");
|
|
|
|
newNamedRange.setReference(sheetName + "!$D$4:$E$8");
|
|
|
|
|
|
|
|
//Creating another new Named Range
|
|
|
|
HSSFName newNamedRange2 = wb.createName();
|
|
|
|
|
|
|
|
newNamedRange2.setNameName("AnotherTest");
|
|
|
|
newNamedRange2.setReference(sheetName + "!$F$1:$G$6");
|
|
|
|
|
|
|
|
|
|
|
|
HSSFName namedRange1 = wb.getNameAt(0);
|
|
|
|
String referece = namedRange1.getReference();
|
|
|
|
|
|
|
|
File file = File.createTempFile("testMultiNamedRange", ".xls");
|
|
|
|
|
|
|
|
FileOutputStream fileOut = new FileOutputStream(file);
|
|
|
|
wb.write(fileOut);
|
|
|
|
fileOut.close();
|
|
|
|
|
|
|
|
|
|
|
|
assertTrue("file exists",file.exists());
|
|
|
|
|
|
|
|
|
|
|
|
FileInputStream in = new FileInputStream(file);
|
|
|
|
wb = new HSSFWorkbook(in);
|
|
|
|
HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
|
|
|
|
assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
|
|
|
|
assertTrue("Reference is "+nm.getReference(),(wb.getSheetName(0)+"!$D$4:$E$8").equals(nm.getReference()));
|
|
|
|
|
|
|
|
nm = wb.getNameAt(wb.getNameIndex("AnotherTest"));
|
|
|
|
assertTrue("Name is "+nm.getNameName(),"AnotherTest".equals(nm.getNameName()));
|
|
|
|
assertTrue("Reference is "+nm.getReference(),newNamedRange2.getReference().equals(nm.getReference()));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test case provided by czhang@cambian.com (Chun Zhang)
|
|
|
|
* <p>
|
|
|
|
* Addresses Bug <a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13775" target="_bug">#13775</a>
|
|
|
|
* @throws IOException
|
|
|
|
*/
|
|
|
|
public void testMultiNamedRange()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
|
|
|
|
// Create a new workbook
|
|
|
|
HSSFWorkbook wb = new HSSFWorkbook ();
|
|
|
|
|
|
|
|
|
|
|
|
// Create a worksheet 'sheet1' in the new workbook
|
|
|
|
wb.createSheet ();
|
|
|
|
wb.setSheetName (0, "sheet1");
|
|
|
|
|
|
|
|
// Create another worksheet 'sheet2' in the new workbook
|
|
|
|
wb.createSheet ();
|
|
|
|
wb.setSheetName (1, "sheet2");
|
|
|
|
|
|
|
|
// Create a new named range for worksheet 'sheet1'
|
|
|
|
HSSFName namedRange1 = wb.createName();
|
|
|
|
|
|
|
|
// Set the name for the named range for worksheet 'sheet1'
|
|
|
|
namedRange1.setNameName("RangeTest1");
|
|
|
|
|
|
|
|
// Set the reference for the named range for worksheet 'sheet1'
|
|
|
|
namedRange1.setReference("sheet1" + "!$A$1:$L$41");
|
|
|
|
|
|
|
|
// Create a new named range for worksheet 'sheet2'
|
|
|
|
HSSFName namedRange2 = wb.createName();
|
|
|
|
|
|
|
|
// Set the name for the named range for worksheet 'sheet2'
|
|
|
|
namedRange2.setNameName("RangeTest2");
|
|
|
|
|
|
|
|
// Set the reference for the named range for worksheet 'sheet2'
|
|
|
|
namedRange2.setReference("sheet2" + "!$A$1:$O$21");
|
|
|
|
|
|
|
|
// Write the workbook to a file
|
|
|
|
File file = File.createTempFile("testMuiltipletNamedRanges", ".xls");
|
|
|
|
FileOutputStream fileOut = new FileOutputStream(file);
|
|
|
|
wb.write(fileOut);
|
|
|
|
fileOut.close();
|
|
|
|
|
|
|
|
assertTrue("file exists",file.exists());
|
|
|
|
|
|
|
|
// Read the Excel file and verify its content
|
|
|
|
FileInputStream in = new FileInputStream(file);
|
|
|
|
wb = new HSSFWorkbook(in);
|
|
|
|
HSSFName nm1 =wb.getNameAt(wb.getNameIndex("RangeTest1"));
|
|
|
|
assertTrue("Name is "+nm1.getNameName(),"RangeTest1".equals(nm1.getNameName()));
|
|
|
|
assertTrue("Reference is "+nm1.getReference(),(wb.getSheetName(0)+"!$A$1:$L$41").equals(nm1.getReference()));
|
|
|
|
|
|
|
|
HSSFName nm2 =wb.getNameAt(wb.getNameIndex("RangeTest2"));
|
|
|
|
assertTrue("Name is "+nm2.getNameName(),"RangeTest2".equals(nm2.getNameName()));
|
|
|
|
assertTrue("Reference is "+nm2.getReference(),(wb.getSheetName(1)+"!$A$1:$O$21").equals(nm2.getReference()));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test to see if the print areas can be retrieved/created in memory
|
|
|
|
*/
|
|
|
|
public void testSinglePrintArea()
|
|
|
|
{
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Test Print Area");
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
|
|
|
|
String reference = sheetName+"!$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, reference);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
|
|
|
|
assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
|
|
assertEquals(reference, retrievedPrintArea);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2003-03-07 16:52:37 -05:00
|
|
|
/**
|
|
|
|
* For Convenience, dont force sheet names to be used
|
|
|
|
*/
|
|
|
|
public void testSinglePrintAreaWOSheet()
|
|
|
|
{
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Test Print Area");
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
|
|
|
|
String reference = "$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, reference);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
|
|
|
|
assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
|
|
assertEquals(sheetName+"!"+reference, retrievedPrintArea);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2003-03-06 15:41:17 -05:00
|
|
|
/**
|
|
|
|
* Test to see if the print area can be retrieved from an excel created file
|
|
|
|
*/
|
|
|
|
public void testPrintAreaFileRead()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
FileInputStream fis = null;
|
|
|
|
POIFSFileSystem fs = null;
|
|
|
|
HSSFWorkbook workbook = null;
|
|
|
|
|
|
|
|
String filename = System.getProperty("HSSF.testdata.path");
|
|
|
|
|
|
|
|
filename = filename + "/SimpleWithPrintArea.xls";
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
fis = new FileInputStream(filename);
|
|
|
|
fs = new POIFSFileSystem(fis);
|
|
|
|
workbook = new HSSFWorkbook(fs);
|
|
|
|
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
String reference = sheetName+"!$A$1:$C$5";
|
|
|
|
|
|
|
|
assertEquals(reference, workbook.getPrintArea(0));
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
fis.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test to see if the print area made it to the file
|
|
|
|
*/
|
|
|
|
public void testPrintAreaFile()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Test Print Area");
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
|
|
|
|
|
|
|
|
String reference = sheetName+"!$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, reference);
|
|
|
|
|
|
|
|
File file = File.createTempFile("testPrintArea",".xls");
|
|
|
|
|
|
|
|
FileOutputStream fileOut = new FileOutputStream(file);
|
|
|
|
workbook.write(fileOut);
|
|
|
|
fileOut.close();
|
|
|
|
|
|
|
|
assertTrue("file exists",file.exists());
|
|
|
|
|
|
|
|
FileInputStream in = new FileInputStream(file);
|
|
|
|
workbook = new HSSFWorkbook(in);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
|
|
assertEquals("References Match", reference, retrievedPrintArea);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test to see if multiple print areas made it to the file
|
|
|
|
*/
|
|
|
|
public void testMultiplePrintAreaFile()
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Sheet 1");
|
|
|
|
sheet = workbook.createSheet("Sheet 2");
|
|
|
|
sheet = workbook.createSheet("Sheet 3");
|
|
|
|
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
String reference = null;
|
|
|
|
|
|
|
|
reference = sheetName+"!$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, reference);
|
|
|
|
|
|
|
|
sheetName = workbook.getSheetName(1);
|
|
|
|
String reference2 = sheetName+"!$B$2:$D$5";
|
|
|
|
workbook.setPrintArea(1, reference2);
|
|
|
|
|
|
|
|
sheetName = workbook.getSheetName(2);
|
|
|
|
String reference3 = sheetName+"!$D$2:$F$5";
|
|
|
|
workbook.setPrintArea(2, reference3);
|
|
|
|
|
|
|
|
File file = File.createTempFile("testMultiPrintArea",".xls");
|
|
|
|
|
|
|
|
FileOutputStream fileOut = new FileOutputStream(file);
|
|
|
|
workbook.write(fileOut);
|
|
|
|
fileOut.close();
|
|
|
|
|
|
|
|
assertTrue("file exists",file.exists());
|
|
|
|
|
|
|
|
FileInputStream in = new FileInputStream(file);
|
|
|
|
workbook = new HSSFWorkbook(in);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea);
|
|
|
|
assertEquals(reference, retrievedPrintArea);
|
|
|
|
|
|
|
|
String retrievedPrintArea2 = workbook.getPrintArea(1);
|
|
|
|
assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea2);
|
|
|
|
assertEquals(reference2, retrievedPrintArea2);
|
|
|
|
|
|
|
|
String retrievedPrintArea3 = workbook.getPrintArea(2);
|
|
|
|
assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea3);
|
|
|
|
assertEquals(reference3, retrievedPrintArea3);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2003-03-07 16:52:37 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tests the setting of print areas with coordinates (Row/Column designations)
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public void testPrintAreaCoords(){
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Test Print Area");
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
|
|
|
|
String reference = sheetName+"!$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, 0, 1, 0, 0);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
|
|
|
|
assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
|
|
assertEquals(reference, retrievedPrintArea);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Verifies an existing print area is deleted
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public void testPrintAreaRemove() {
|
|
|
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
|
HSSFSheet sheet = workbook.createSheet("Test Print Area");
|
|
|
|
String sheetName = workbook.getSheetName(0);
|
|
|
|
|
|
|
|
String reference = sheetName+"!$A$1:$B$1";
|
|
|
|
workbook.setPrintArea(0, 0, 1, 0, 0);
|
|
|
|
|
|
|
|
String retrievedPrintArea = workbook.getPrintArea(0);
|
|
|
|
|
|
|
|
assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);
|
|
|
|
|
|
|
|
workbook.removePrintArea(0);
|
|
|
|
assertNull("PrintArea was not removed", workbook.getPrintArea(0));
|
|
|
|
}
|
2003-03-06 15:41:17 -05:00
|
|
|
|
2002-04-27 09:18:57 -04:00
|
|
|
}
|
|
|
|
|