java根据excel中的手机号查询归属地并添加到excel

首先是手机号查归属地的依赖

 <!--手机号归属地查询-->
        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>geocoder</artifactId>
            <version>LATEST</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>libphonenumber</artifactId>
            <version>LATEST</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>prefixmapper</artifactId>
            <version>LATEST</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>carrier</artifactId>
            <version>LATEST</version>
        </dependency>

手机号查询工具类

package com.lkp.demo.Util;

import com.google.i18n.phonenumbers.PhoneNumberToCarrierMapper;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;

import java.util.Locale;

/**
 * @program: demo
 * @description: 工具类
 * @author: Mr.JZQ
 * @create: 2022-01-18 15:30
 **/

public class PhoneUtil {
    private static PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    private static PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper.getInstance();
    private static PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();

    /**
     * 根据国家代码和手机号  判断手机号是否有效
     * @param phoneNumber
     * @param countryCode
     * @return
     */
    public static boolean checkPhoneNumber(String phoneNumber, String countryCode){

        int ccode = Integer.valueOf(countryCode);
        long phone = Long.valueOf(phoneNumber);

        Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();
        pn.setCountryCode(ccode);
        pn.setNationalNumber(phone);

        return phoneNumberUtil.isValidNumber(pn);

    }

    /**
     * 根据国家代码和手机号  判断手机运营商
     * @param phoneNumber
     * @param countryCode
     * @return
     */
    public static String getCarrier(String phoneNumber, String countryCode){

        int ccode = Integer.valueOf(countryCode);
        long phone = Long.valueOf(phoneNumber);

        Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();
        pn.setCountryCode(ccode);
        pn.setNationalNumber(phone);
        //返回结果只有英文,自己转成成中文
        String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH);
        String carrierZh = "";
        carrierZh += geocoder.getDescriptionForNumber(pn, Locale.CHINESE);
        switch (carrierEn) {
            case "China Mobile":
                carrierZh += "移动";
                break;
            case "China Unicom":
                carrierZh += "联通";
                break;
            case "China Telecom":
                carrierZh += "电信";
                break;
            default:
                break;
        }
        return carrierZh;
    }


    /**
     *
     * @Description: 根据国家代码和手机号  手机归属地
     * @date 2015-7-13 上午11:33:18
     * @param @param phoneNumber
     * @param @param countryCode
     * @param @return    参数
     * @throws
     */
    public static String getAdd(String phoneNumber, String countryCode) {

        int ccode = Integer.valueOf(countryCode);
        long phone = Long.valueOf(phoneNumber);

        Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();
        pn.setCountryCode(ccode);
        pn.setNationalNumber(phone);
        String descriptionForNumber = geocoder.getDescriptionForNumber(pn, Locale.CHINA);
        return descriptionForNumber;
    }

}

调用方法

String carrier = PhoneUtil.getCarrier("15965451235", "+86");//获取手机号归宿的

操作execl依赖


        <!-- xls -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.9</version>
            </dependency>
            <!-- xlsx -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.9</version>
            </dependency>

最后是从指定的execl中读取手机号 然后添加手机号归属地到指定位置




        //1、创建输入流,指定要读取的文件
        InputStream inputStream = new FileInputStream("D:\\1.xlsx");
        //2、创建workbook将输入流传过去
        XSSFWorkbook hssfWorkbook = new XSSFWorkbook(inputStream);
        //3、指定读取的sheet
        XSSFSheet sheet = hssfWorkbook.getSheetAt(0);
        int rowNum = sheet.getPhysicalNumberOfRows();
        for (int i = 2; i < rowNum; i++) {
            //修改execl
            //4、获取指定行
            XSSFRow row = sheet.getRow(i);
            //5、获取指定cell
            XSSFCell cell = row.getCell(1);
            if (null == cell) {
                continue;
            }
            //6、从cell中也就是单元格中获取数据
            String cellValue = cell.getRawValue();
            String carrier = PhoneUtil.getCarrier(cellValue, "+86");
            if (carrier.length() < 2) {
                continue;
            }
            //先去判断如果包含省就截取到省如果不包含省就截取到市
            String cityName=null;
            if (carrier.contains("省")||carrier.contains("市")){
                if (carrier.contains("省")) {
                    cityName = carrier.substring(0, carrier.indexOf("省"));
                } else {
                    cityName = carrier.substring(0, carrier.indexOf("市"));
                }
                System.out.println(cityName);
            }

            //输出结果

            row.createCell(5).setCellValue(cityName);
        }
        FileOutputStream out = new FileOutputStream("D:\\1.xlsx");
        hssfWorkbook.write(out);
        out.flush();
        out.close();
        //关闭输入流
        inputStream.close();

整理了一上午 希望能够帮到你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值