mirror of
https://github.com/apache/poi.git
synced 2025-02-07 18:48:20 +00:00
bug 57840: add unit test for XSSFTable.findColumnIndex
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1747762 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dc1491f369
commit
6366074fff
@ -335,12 +335,15 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
|
|||||||
* The column index is relative to the left-most column in the table, 0-indexed.
|
* The column index is relative to the left-most column in the table, 0-indexed.
|
||||||
* Returns <code>-1</code> if <code>column</code> is not a header name in table.
|
* Returns <code>-1</code> if <code>column</code> is not a header name in table.
|
||||||
*
|
*
|
||||||
|
* Column Header names are case-insensitive
|
||||||
|
*
|
||||||
* Note: this function caches column names for performance. To flush the cache (because columns
|
* Note: this function caches column names for performance. To flush the cache (because columns
|
||||||
* have been moved or column headers have been changed), {@link #updateHeaders()} must be called.
|
* have been moved or column headers have been changed), {@link #updateHeaders()} must be called.
|
||||||
*
|
*
|
||||||
* @since 3.15 beta 2
|
* @since 3.15 beta 2
|
||||||
*/
|
*/
|
||||||
public int findColumnIndex(String column) {
|
public int findColumnIndex(String columnHeader) {
|
||||||
|
if (columnHeader == null) return -1;
|
||||||
if (columnMap == null) {
|
if (columnMap == null) {
|
||||||
// FIXME: replace with org.apache.commons.collections.map.CaseInsensitiveMap
|
// FIXME: replace with org.apache.commons.collections.map.CaseInsensitiveMap
|
||||||
int count = getTableColumns().length;
|
int count = getTableColumns().length;
|
||||||
@ -353,7 +356,7 @@ public class XSSFTable extends POIXMLDocumentPart implements Table {
|
|||||||
}
|
}
|
||||||
// Table column names with special characters need a single quote escape
|
// Table column names with special characters need a single quote escape
|
||||||
// but the escape is not present in the column definition
|
// but the escape is not present in the column definition
|
||||||
Integer idx = columnMap.get(caseInsensitive(column.replace("'", "")));
|
Integer idx = columnMap.get(caseInsensitive(columnHeader.replace("'", "")));
|
||||||
return idx == null ? -1 : idx.intValue();
|
return idx == null ? -1 : idx.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -110,4 +111,27 @@ public final class TestXSSFTable {
|
|||||||
outputWorkbook.close();
|
outputWorkbook.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
@Test
|
||||||
|
public void findColumnIndex() throws IOException {
|
||||||
|
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||||
|
// FIXME: use a worksheet where upper left cell of table is not A1 so that we test
|
||||||
|
// that XSSFTable.findColumnIndex returns the column index relative to the first
|
||||||
|
// column in the table, not the column number in the sheet
|
||||||
|
|
||||||
|
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||||
|
assertNotNull(table);
|
||||||
|
assertEquals(0, table.findColumnIndex("calc='#*'#"));
|
||||||
|
assertEquals(1, table.findColumnIndex("Name"));
|
||||||
|
assertEquals(2, table.findColumnIndex("Number"));
|
||||||
|
|
||||||
|
assertEquals("case insensitive", 2, table.findColumnIndex("NuMbEr"));
|
||||||
|
|
||||||
|
// findColumnIndex should return -1 if no column header name matches
|
||||||
|
assertEquals(-1, table.findColumnIndex(null));
|
||||||
|
assertEquals(-1, table.findColumnIndex(""));
|
||||||
|
assertEquals(-1, table.findColumnIndex("one"));
|
||||||
|
|
||||||
|
wb.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user