ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生成省市区(不包含港澳台)

2021-12-17 19:03:50  阅读:215  来源: 互联网

标签:string 港澳台 生成 current file path 省市区 data row


生成省市区数据(不包含港澳台)

获取省市区数据

中华人民共和国行政区划代码:http://www.mca.gov.cn/article/sj/xzqh/

从以上网址找到最新行政区编码复制到excel

image-20211217142122346

备注:因四个直辖市(北京、天津、上海、重庆)无市级划分、故加入同级市并将区划代码后三位改为100.

生成所需数据excel函数

生成对应等级(省1、市2、区/县3):=IF(MID(A2,1,6)="100000",0,IF(MID(A2,3,4)="0000",1,IF(MID(A2,5,2)="00",2,3)))

生成上级ID:=IF(C2=0,C2,IF(C2=1,"100000",IF(C2=2,MID(A2,1,2)&"0000",IF(C2=3,MID(A2,1,4)&"00",))))

备注:因为phpexcel获取到数据为函数,故需要将数据重新复制为纯文本

image-20211217143309633

生成数组数据

  • php7.4及以上
composer require phpoffice/phpspreadsheet
public function import(string $file_path, int $start_row = 1): array
{
    try {
        # 创建读操作
        $reader = IOFactory::createReaderForFile($file_path);
        # 打开文件、载入excel表格
        $spreadsheet = $reader->load($file_path);
        # 获取活动工作薄
        $sheet = $spreadsheet->getActiveSheet();
        //获取总列数
        $total_column = $sheet->getHighestColumn();
        //获取总行数
        $total_row = $sheet->getHighestRow();
        $data = [];
        //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
        for ($current_row = $start_row; $current_row <= $total_row; $current_row++) {
            //从哪列开始,A表示第一列
            for ($current_column = 'A'; $current_column <= $total_column; $current_column++) {
                //数据坐标
                $address = $current_column . $current_row;
                //去除空格,将获取到的数组转化为字符串
                $string_value = preg_replace('/^[(\xc2\xa0)|\s]+/', '', $sheet->getCell($address)->getValue());
                //去除为空的数据
                if ($string_value == ''){
                    break;
                }
                //读取到的数据,保存到数组中
                $data[$current_row][$current_column] = $string_value;
            }
        }
    }catch (Exception $exception){
        return [
            'error' => $exception->getMessage()
        ];
    }
    return $data;
}
  • php7.3及以下
composer require phpoffice/phpexcel
public function import(string $file_path, int $start_row = 1): array
{
    try {
        # 创建读操作
        $PHPReader = \PHPExcel_IOFactory::createReaderForFile($file_path);
        # 打开文件、载入excel表格
        $PHPExcel = $PHPReader->load($file_path);
        # 获取活动工作薄
        $currentSheet = $PHPExcel->getSheet();
        //获取总列数
        $total_column = $currentSheet->getHighestColumn();
        //获取总行数
        $total_row = $currentSheet->getHighestRow();
        $data = [];
        //循环获取表中的数据,$current_row表示当前行,从哪行开始读取数据,索引值从0开始
        for ($current_row = $start_row; $current_row <= $total_row; $current_row++) {
            //从哪列开始,A表示第一列
            for ($current_column = 'A'; $current_column <= $total_column; $current_column++) {
                //数据坐标
                $address = $current_column . $current_row;
                //去除空格,将获取到的数组转化为字符串
                $string_value = preg_replace('/^[(\xc2\xa0)|\s]+/', '', $sheet->getCell($address)->getValue());
                //去除为空的数据
                if ($string_value == ''){
                    break;
                }
                //读取到的数据,保存到数组中
                $data[$current_row][$current_column] = $string_value;
            }
        }
    }catch (Exception $exception){
        return [
            'error' => $exception->getMessage()
        ];
    }
    return $data;
}

拼装导入数据

有能力自己拼装sql、没有能力利用框架。

已生成好的sql:https://www.51job.top/provinces/sql

标签:string,港澳台,生成,current,file,path,省市区,data,row
来源: https://www.cnblogs.com/jurij/p/15703458.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有