testnamedrange.java

来自「EXCEL read and write」· Java 代码 · 共 546 行 · 第 1/2 页

JAVA
546
字号
	 public void testPrintAreaFile() {	 	HSSFWorkbook workbook = new HSSFWorkbook();	 	workbook.createSheet("Test Print Area");	 	String sheetName = workbook.getSheetName(0);		 	 	 	String reference = sheetName+"!$A$1:$B$1";	 	workbook.setPrintArea(0, reference);		 		workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);		 	 	String retrievedPrintArea = workbook.getPrintArea(0);	   	 	assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);	 	assertEquals("References Match", "'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea);	}	/**	 * Test to see if multiple print areas made it to the file	 */	public void testMultiplePrintAreaFile() {		HSSFWorkbook workbook = new HSSFWorkbook();		workbook.createSheet("Sheet1");		workbook.createSheet("Sheet2");		workbook.createSheet("Sheet3");		String reference1 = "Sheet1!$A$1:$B$1";		String reference2 = "Sheet2!$B$2:$D$5";		String reference3 = "Sheet3!$D$2:$F$5";				workbook.setPrintArea(0, reference1); 		workbook.setPrintArea(1, reference2);		workbook.setPrintArea(2, reference3);		//Check created print areas		String retrievedPrintArea;				retrievedPrintArea = workbook.getPrintArea(0);		assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea);		assertEquals(reference1, retrievedPrintArea);		retrievedPrintArea = workbook.getPrintArea(1);		assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea);		assertEquals(reference2, retrievedPrintArea);		retrievedPrintArea = workbook.getPrintArea(2);		assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea);		assertEquals(reference3, retrievedPrintArea);		// Check print areas after re-reading workbook		workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);		retrievedPrintArea = workbook.getPrintArea(0);		assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea);		assertEquals(reference1, retrievedPrintArea);		retrievedPrintArea = workbook.getPrintArea(1);		assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea);		assertEquals(reference2, retrievedPrintArea);		retrievedPrintArea = workbook.getPrintArea(2);		assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea);		assertEquals(reference3, retrievedPrintArea);	}	/**	 * 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("'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea);	}	/**	 * Tests the parsing of union area expressions, and re-display in the presence of sheet names	 * with special characters.	 */	public void testPrintAreaUnion(){		HSSFWorkbook workbook = new HSSFWorkbook();		HSSFSheet sheet = workbook.createSheet("Test Print Area");		String sheetName = workbook.getSheetName(0); 		String reference =	   sheetName +  "!$A$1:$B$1, " + sheetName + "!$D$1:$F$2";		String expResult = "'" + sheetName + "'!$A$1:$B$1,'" + sheetName + "'!$D$1:$F$2";		workbook.setPrintArea(0, reference);				 		String retrievedPrintArea = workbook.getPrintArea(0);		assertNotNull("Print Area not defined for first sheet", retrievedPrintArea);		assertEquals(expResult, 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)); 	}	/**	 * Verifies correct functioning for "single cell named range" (aka "named cell")	 */	public void testNamedCell_1() {		// setup for this testcase		String sheetName = "Test Named Cell";		String cellName = "A name for a named cell";		String cellValue = "TEST Value";		HSSFWorkbook wb = new HSSFWorkbook();		HSSFSheet sheet = wb.createSheet(sheetName);		sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString(cellValue));		 		// create named range for a single cell using areareference		HSSFName namedCell = wb.createName();		namedCell.setNameName(cellName);		String reference = sheetName+"!A1:A1";		namedCell.setReference(reference);		// retrieve the newly created named range		int namedCellIdx = wb.getNameIndex(cellName);		HSSFName aNamedCell = wb.getNameAt(namedCellIdx);		assertNotNull(aNamedCell);		// retrieve the cell at the named range and test its contents		AreaReference aref = new AreaReference(aNamedCell.getReference());		assertTrue("Should be exactly 1 cell in the named cell :'" +cellName+"'", aref.isSingleCell());		CellReference cref = aref.getFirstCell();		assertNotNull(cref);		HSSFSheet s = wb.getSheet(cref.getSheetName());		assertNotNull(s);		HSSFRow r = sheet.getRow(cref.getRow());		HSSFCell c = r.getCell(cref.getCol());		String contents = c.getRichStringCellValue().getString();		assertEquals("Contents of cell retrieved by its named reference", contents, cellValue);	}	/**	 * Verifies correct functioning for "single cell named range" (aka "named cell")	 */	public void testNamedCell_2() {		// setup for this testcase		String sname = "TestSheet", cname = "TestName", cvalue = "TestVal";		HSSFWorkbook wb = new HSSFWorkbook();		HSSFSheet sheet = wb.createSheet(sname);		sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString(cvalue));		 		// create named range for a single cell using cellreference		HSSFName namedCell = wb.createName();		namedCell.setNameName(cname);		String reference = sname+"!A1";		namedCell.setReference(reference);		// retrieve the newly created named range		int namedCellIdx = wb.getNameIndex(cname);		HSSFName aNamedCell = wb.getNameAt(namedCellIdx);		assertNotNull(aNamedCell);		// retrieve the cell at the named range and test its contents		CellReference cref = new CellReference(aNamedCell.getReference());		assertNotNull(cref);		HSSFSheet s = wb.getSheet(cref.getSheetName());		HSSFRow r = sheet.getRow(cref.getRow());		HSSFCell c = r.getCell(cref.getCol());		String contents = c.getRichStringCellValue().getString();		assertEquals("Contents of cell retrieved by its named reference", contents, cvalue);	}	public void testDeletedReference() throws Exception {		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("24207.xls");		assertEquals(2, wb.getNumberOfNames());		HSSFName name1 = wb.getNameAt(0);		assertEquals("a", name1.getNameName());		assertEquals("Sheet1!$A$1", name1.getReference());		AreaReference ref1 = new AreaReference(name1.getReference());		assertTrue("Successfully constructed first reference", true);		HSSFName name2 = wb.getNameAt(1);		assertEquals("b", name2.getNameName());		assertEquals("Sheet1!#REF!", name2.getReference());		assertTrue(name2.isDeleted());		try {			AreaReference ref2 = new AreaReference(name2.getReference());			fail("attempt to supply an invalid reference to AreaReference constructor results in exception");		} catch (StringIndexOutOfBoundsException e) { // TODO - use a different exception for this condition			// expected during successful test		}   }		public void testRepeatingRowsAndColumsNames() {		// First test that setting RR&C for same sheet more than once only creates a 		// single  Print_Titles built-in record		HSSFWorkbook wb = new HSSFWorkbook();		HSSFSheet sheet = wb.createSheet("FirstSheet");				// set repeating rows and columns twice for the first sheet		for (int i = 0; i < 2; i++) {			wb.setRepeatingRowsAndColumns(0, 0, 0, 0, 3-1);			sheet.createFreezePane(0, 3);		}		assertEquals(1, wb.getNumberOfNames());		HSSFName nr1 = wb.getNameAt(0);				assertEquals("Print_Titles", nr1.getNameName());		if (false) {			// 	TODO - full column references not rendering properly, absolute markers not present either			assertEquals("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.getReference());		} else {			assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getReference());		}				// Save and re-open		HSSFWorkbook nwb = HSSFTestDataSamples.writeOutAndReadBack(wb);		assertEquals(1, nwb.getNumberOfNames());		nr1 = nwb.getNameAt(0);				assertEquals("Print_Titles", nr1.getNameName());		assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getReference());				// check that setting RR&C on a second sheet causes a new Print_Titles built-in		// name to be created		sheet = nwb.createSheet("SecondSheet");		nwb.setRepeatingRowsAndColumns(1, 1, 2, 0, 0);		assertEquals(2, nwb.getNumberOfNames());		HSSFName nr2 = nwb.getNameAt(1);				assertEquals("Print_Titles", nr2.getNameName());		assertEquals("SecondSheet!B:C,SecondSheet!$A$1:$IV$1", nr2.getReference());				if (false) {			// In case you fancy checking in excel, to ensure it			//  won't complain about the file now			try {				File tempFile = File.createTempFile("POI-45126-", ".xls");				FileOutputStream fout = new FileOutputStream(tempFile);				nwb.write(fout);				fout.close();				System.out.println("check out " + tempFile.getAbsolutePath());			} catch (IOException e) {				throw new RuntimeException(e);			}		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?