Jaap, the expression you provided tells the pattern matching engine to find a single "word" character, followed by anything but a ., \, or /. You then tell the engine to match these at least once, and, once it's found all that it can, it then must match .xls once and only once and that the .xls must be at the end of the string.
1) your matching pattern is two characters wide, \w & [^\.\\/], both of these must pass every time for your ()+ to work. All of your file names are of odd lengths, this will never work.
2) you tell it that the second character in the match must not be ., \, or /. As the ending works it's way down the string, it will eventually encounter a ., but you told the pattern that a dot is not acceptable, this causes the match to fail and the pattern unwinds to the last successful match. You the tell it that it must be followed by .xls, but when it unwinds, it goes back to the start of the last attempted match, which, in your examples, would be 'e.xls', 't.xls', and 'l.xls' respectively.
3) lastly, and this isn't causing failures, you match against (.xls){1}$, the {1} is unnecessary as every pattern will match only once unless you alter the match pattern with {}, ?, +, *, etc.
^([^\.\\/])+(.xls)$
This tells the engine to match everything except for ., \, and / as many times as possible (and at least once) starting from the beginning of the string, once it's exhausted all that it can, it must be followed by .xls which must also be at the end of the line.
http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1236361993&sr=8-1