csv文件和xlsx文件内容根据指定字段比较
时间:2023-3-1 21:12 作者:wen 分类: PHP
<?php
set_time_limit(0);
ini_set('memory_limit', '-1');
require_once "../vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\IOFactory;
//读取数据
$file_old = __DIR__ . DIRECTORY_SEPARATOR . "sqlResult_3313390.csv";
$file_new = __DIR__ . DIRECTORY_SEPARATOR . "zipbusiness_2021.xlsx";
//打开文件
$fp_old = fopen($file_old, 'r');
$result_old = array();
while (false !== ($row = fgetcsv($fp_old))) {
$result_old[] = [$row[0], $row[2]];
}
//打开文件
$spreadsheet = IOFactory::load($file_new);
$worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestRow(); // 总行数
$highestColumn = $worksheet->getHighestColumn(); // 总列数字母
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); //总列数数字
for ($row = 2; $row <= $highestRow; ++$row) {
$zipcode = $worksheet->getCellByColumnAndRow(1, $row)->getValue();//邮编
$city = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); //城市
foreach ($result_old as $result) {
if ($result[0] == $zipcode and strtoupper($result[1]) == strtoupper($city)) {
echo $row . PHP_EOL;
$worksheet->setCellValueByColumnAndRow($highestColumnIndex + 1, $row, '相同');
break;
}
}
}
//导出工作表
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('./write.xlsx');