{"text_format":"3","workbook":"xls","n_sheets":2,"sheets":["Read Me","DGet"],"not_rendered":{"external_links":1,"defined_names":3},"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"Read Me","index":0,"n_rows":11,"n_cols":1,"rows_kept":11,"flags":["formulas_cached_only"]}
["This spreadsheet contains various test cases for the functions: DGET"]
["Name of the main junit test class which uses this spreadsheet:"]
["org.apache.poi.ss.formula.functions.TestDGetFunctionsFromSpreadsheet"]
["(The content of cell 'Read Me'!A3 is confirmed by the test)"]
[]
["Every sheet besides this first one contains formula evaluation test cases in a standardised format."]
["On row 4 of each sheet, in columns B,C,D there are the column headings \"Formula\", \"Expected Result\" and \"Comment\""]
["The test iterates down from row 5 onward  until a the text \"<end>\" is found in column A.   Rows with \"<skip>\" in column A are ignored (useful for currently unsupported behaviour).  Otherwise column A can be used for commenting the group of rows below. "]
["If the evaluated result of column B does not match the expected result in column C, the junit test will report a failure.  Test failures get annotated with the section and row comments, if any."]
["Besides the first 4 columns, row 5 onwards, the junit test does not inspect any other cells in the sheet.  The other cells can be used freely to set up test data."]
["Care should be taken to not only make the values in column C match those in column B, but also to make sure column C contains only simple literal values.  This can be achieved easily by 'pasting special' from column B to C, selecting the 'as values' option."]

{"sheet":"DGet","index":1,"n_rows":104,"n_cols":53,"rows_kept":104,"flags":["formulas_cached_only"]}
[null,"Sheet Comment:","DGET tests",null,null,"database"]
[{"$nulls":5},"name","age","size","headgear","glasses"]
[null,"Formula","Expected Result","Comment",null,"Huey",6,45,"cap~",false]
[{"$nulls":5},"Dewey",7,"fourty-six","cap?",false]
["numeric and boolean comparisions",{"$nulls":4},"Louie",8,47,"cap*",false]
[null,"Huey","Huey","smaller found",null,"Donald",32,70,"sailor's hat",false]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"smaller not found",null,"Scrooge",62,65,"top hat",true]
[null,"Louie","Louie","equals found"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"equals not found"]
[null,"Scrooge","Scrooge","larger found"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"larger not found",null,"age","age","age","age","age","age","age","age","age","age","age","glasses","glasses","size"]
[null,"Huey","Huey","smaller equals found",null,"<7","<6","=8","=15",">40",">100","<=6","<=5",">=62",">=100","<10",true,"=TRUE","<47"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"smaller equals not found"]
[null,"Scrooge","Scrooge","larger equals found"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"larger equals not found"]
[null,{"$error":"#NUM!"},{"$error":"#NUM!"},"more than one result"]
[null,"Scrooge","Scrooge","boolean search"]
[null,{"$error":"#VALUE!"},"Scrooge","textual search for boolean"]
[null,"Huey","Huey","mixed text/number columns"]
["string comparisions"]
[null,"Donald","Donald","equals found",null,"headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear","headgear"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"equals not found",null,"=sailor's hat","=fedora","top","fed","=to? hat","=po? hat","=to?p hat","=t?hat","=t???hat","=t?p?h?t","=to*p hat","=t*p hat","=toph*","=t*t","*p hat","=sailo*","=*p h*t","=t?p h*","=cap~~","=cap~?","=cap~*"]
[null,"Scrooge","Scrooge","starts with found"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"starts with not found"]
["<skip>","Scrooge","Scrooge","questionmark found"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"questionmark not found"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"questionmark does not stand for empty"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"questionmark does not stand for more than one"]
["<skip>","Scrooge","Scrooge","more than one questionmark in a row"]
["<skip>","Scrooge","Scrooge","more than one questionmark spread"]
["<skip>","Scrooge","Scrooge","star can be empty"]
["<skip>","Scrooge","Scrooge","star can stand for a single letter"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"star search failing"]
["<skip>","Scrooge","Scrooge","star can stand for multiple letters (middle)"]
["<skip>","Scrooge","Scrooge","star can stand for multiple letters (beginning)"]
["<skip>","Donald","Donald","star can stand for multiple letters (end)"]
["<skip>","Scrooge","Scrooge","multiple stars"]
["<skip>","Scrooge","Scrooge","mixing stars and questionmarks"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"tilde escaping tilde is broken (Excel bug)"]
["<skip>","Dewey","Dewey","tilde excaping questionmark"]
["<skip>","Louie","Louie","tilde escaping star"]
["formula comparisons"]
["<skip>",{"$error":"#VALUE!"},{"$error":"#VALUE!"},"referencing database header cell",null,null,7]
["<skip>","Dewey","Dewey","using references",null,"Formula","Formula","Formula","Formula","Formula"]
["<skip>","Scrooge","Scrooge","using database header names (boolean comparision)",null,false,false,{"$error":"#NAME?"},{"$error":"#NAME?"},{"$error":"#NAME?"}]
["<skip>","Huey","Huey","integer comparison"]
["<skip>","Donald","Donald","integer calculation and comparison"]
["AND/OR"]
[null,"Louie","Louie","and",null,"age","age",null,"age","glasses",null,"age",null,"age",null,"age",null,"age","size"]
[null,{"$error":"#VALUE!"},{"$error":"#NUM!"},"and (more than one result)",null,"<30",">7",null,"<=8","FALSE",null,"=6",null,"=50",null,"<7",null,"=62","=60"]
[null,"Huey","Huey","or (first condition hits)",{"$nulls":7},"=50",null,"=6",null,"<10",null,"=32","=70"]
[null,"Huey","Huey","or (second condition hits)"]
[null,{"$error":"#NUM!"},{"$error":"#NUM!"},"or (more than one result)"]
[null,"Donald","Donald","or + and"]
["corner cases matching via values"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Equality Sign, unescaped matching ="]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Equality Sign, escaped matching =",null,"Index","Value",null,null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value"]
[null,"a","a","Equality Sign, double, escaped matching =",null,"a","=","Equality Sign",null,"a","=",null,"a","=",null,"a","==",null,"b",null,null,"b"," ",null,"c",null,null,"d"," ",null,"d",null,null,"e"," ",null,"e",null,null,"f",{"$error":"#VALUE!"},null,"f",null,null,"g",{"$error":"#NUM!"},null,"g",{"$error":"#VALUE!"},null,"g"]
[null,"b","b","Empty Cell matching Empty Cell",null,"b",null,"Empty Cell"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Space matching Empty Cell",null,"c","","Empty String with Formula",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value",null,"Index","Value"]
[null,"c","c","Empty Cell matching Empty Cell via Formula",null,"d"," ","Space",null,"c","",null,"b","",null,"h","",null,"b","=",null,"h","=",null,"i","",null,"i","="]
[null,"d","d","Space matching Space",null,"e"," ","Space with Formula"]
[null,"d","d","Empty Cell matching Space",null,"f",{"$error":"#VALUE!"}]
[null,"e","e","Space matching Space via Formula",null,"g",{"$error":"#NUM!"}]
[null,"e","e","Empty Cell matching Space via Formula",null,"h","abc"]
[null,"f","f","#VALUE! matching #VALUE!",null,"i",0]
[null,"f","f","Empty Cell matching #VALUE!"]
[null,"g","g","#NUM! matching #NUM!"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"#VALUE! matching #NUM!"]
[null,"g","g","Empty Cell matching #NUM!"]
["corner cases matching via formula"]
[null,"c","c","Empty String matching Empty String via Formula"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Empty String matching Empty Cell"]
[null,"h","h","Empty String matching Filled Cell"]
[null,"b","b","Equality Sign matching Empty Cell"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Equality Sign matching Filled Cell"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Empty String matching 0"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Equality Sign matching 0"]
["corner cases empty filter columns"]
[null,"a","a","Header: empty cell, Value: empty cell",null,null,"One","Two","Three",null,null,"One",null,"Three",null,"One","","Three",null,"One",{"$nulls":4},"One",null,"Three",null,"One","","Three"]
[null,"a","a","Header: empty string, Value: empty cell",null,null,"a","c","x",null,null,"a",null,"x",null,"a",null,"x",null,"a",{"$nulls":4},"a","","x",null,"a","","x"]
[null,"a","a","Multiple empty trailing filter columns (more than DB width)",null,null,"b","d","y"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Header: empty cell, Value: empty string"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"Header: empty string, Value: empty string"]
["numbers as condition"]
[null,"a","a","numeric condition, numeric value",null,null,"One","Two",{"$nulls":3},"One","Two",null,"One","Two",null,"One","Two",null,"One","Two"]
[null,"a","a","textual condition, numeric value",null,null,"a",1,"numeric value",null,null,"a",1,null,"a","1",null,"b",2,null,"b","2"]
[null,"b","b","numeric condition, textual value",null,null,"b","2","textual value"]
[null,"b","b","textual condition, textual value"]
["strange types as headers"]
[null,"a","a","numeric"]
[null,"a","a","boolean",null,null,"One",2,"TRUE",{"$error":"#VALUE!"},{"$error":"#N/A"},{"$error":"#NUM!"},{"$error":"#NAME?"},null,"One",2,null,"One","TRUE",null,"One",{"$error":"#VALUE!"},null,"One",{"$error":"#N/A"},null,"One",{"$error":"#NUM!"},null,"One",{"$error":"#NAME?"}]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"#WERT!",null,null,"a","b","c","d","e","f","g",null,"a","b",null,"a","c",null,"a","d",null,"a","e",null,"a","f",null,"a","g"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"#NV"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"#ZAHL!",{"$nulls":10},"One","2"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"#NAME?",{"$nulls":10},"a","b"]
[null,"a","a","textual number"]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"wrong number",{"$nulls":10},"One",3]
[null,{"$error":"#VALUE!"},{"$error":"#VALUE!"},"number with wrong value",null,null,"One","Two",{"$nulls":6},"a","b"]
["empty cells",{"$nulls":6},"a",null,"One","Two"]
[null,"b","b","don't fail with empty cells in searched column",null,null,"def","b",null,"def","b",{"$nulls":3},"One",2]
[null,"c","c","don't fail with empty cells in DB headers",{"$nulls":10},"a","c"]
["<end>",{"$nulls":5},"One",null,"Three",null,"One","Three"]
[{"$nulls":6},"a","b","c",null,"a","c"]