java excel 识别出手机号、姓名、省市区
时间: 2023-07-10 20:35:38 浏览: 76
可以使用 Apache POI 库来实现 Java 解析 Excel 文件的功能,并使用正则表达式来匹配手机号、姓名和省市区信息。
首先,你需要导入 Apache POI 库,然后使用其提供的 API 来读取 Excel 文件中的数据。
然后,你可以使用正则表达式来匹配手机号和省市区信息,例如:
手机号:使用正则表达式 `\d{11}` 来匹配11位数字,即手机号。
省市区:你可以使用第三方库或者公开数据源来获取省市区信息,然后使用正则表达式来匹配相应的信息。
最后,将匹配到的信息保存到一个数据结构中,例如一个 List 或者一个 Map。
以下是一个简单的示例代码,可以帮助你入门:
```java
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ExcelParser {
public static void main(String[] args) {
try {
// 读取 Excel 文件
Workbook workbook = WorkbookFactory.create(new FileInputStream("data.xlsx"));
Sheet sheet = workbook.getSheetAt(0);
// 定义正则表达式
Pattern phonePattern = Pattern.compile("\\d{11}");
Pattern areaPattern = Pattern.compile("上海市浦东新区");
// 定义数据结构
List<String> names = new ArrayList<>();
List<String> phones = new ArrayList<>();
List<String> areas = new ArrayList<>();
// 遍历所有行
for (Row row : sheet) {
// 获取单元格数据
Cell nameCell = row.getCell(0);
Cell phoneCell = row.getCell(1);
Cell areaCell = row.getCell(2);
// 匹配手机号
String phone = phoneCell.getStringCellValue();
Matcher phoneMatcher = phonePattern.matcher(phone);
if (phoneMatcher.matches()) {
phones.add(phone);
}
// 匹配省市区
String area = areaCell.getStringCellValue();
Matcher areaMatcher = areaPattern.matcher(area);
if (areaMatcher.matches()) {
areas.add(area);
}
// 匹配姓名
String name = nameCell.getStringCellValue();
if (!phoneMatcher.matches() && !areaMatcher.matches()) {
names.add(name);
}
}
// 输出结果
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i) + " " + phones.get(i) + " " + areas.get(i));
}
// 关闭 Excel 文件
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意:上面的代码示例是针对 xlsx 格式的 Excel 文件,如果你要解析 xls 格式的文件,则需要使用不同的 API。