需要用到String类的matches(),boolean matches(String regex),判断字符串是否与给定的正则表达式匹配。
// 例:读取03和07版本的excel
String fileNameAndPath = "e:\\测试.xls";
if ( fileNameAndPath.matches("^.+\\.(?i)((xls)|(xlsx))$") ){
// 得到文件输入流对象
FileInputStream inputStream = new FileInputStream(fileNameAndPath);
boolean is03Excel = fileNameAndPath.matches( "^.+\\.(?i)(xls)$" );
// 创建工作簿,并传递要读取的文件
Workbook workBook = is03Excel ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream); //HSSFWorkbook和XSSFWorkbook都实现了Workbook接口
// 得到工作表,并读取
Sheet sheet = workBook.getSheetAt(0);
// 得到行,并读取
Row row = sheet.getRow(2);
// 得到单元格,并读取单元格
Cell cell = row.getCell(2);
System.out.println("C3单元格的内容是:" + cell.getStringCellValue());
workBook.close();
inputStream.close();
}
上面代码用到的正则表达式解释如下:
^ 匹配输入字符串的开始位置 |
$ 匹配输入字符串的结束位置 |
| 或者的意思 |
?i 不区分大小写 |
. 任意的意思 |
开始位置后面的 . 代表任意路径任意文件名称;+ 后面的 . 是文件类型的固定后缀,所以是特殊字符,因为在正则表达式 . 代表任意的意思,所以需要用到转义字符 \ ,而 \ 又是特殊字符,再去用 \ 去转