setInputEncoding("CP936");
//$reader->setCodepage("CP936");
$excel = $reader->load($file);
return $excel->getActiveSheet()->toArray(null,true,true,false);
}
/**
* Upload excel data to mysql table trade_record
* @param $data: array which get from excel file.
* @param $company: 证券公司名
* @return array: msg
*/
function dbOp($data,$company)
{
$mysqli = get_mysqli_connection();
$maxrow = count($data);
$maxcol = count($data[0]);
$msg = array();
for ($row = 0; $row < $maxrow; $row++) {
if ($row == 0) {
//检查文件与证券公司是否匹配
if(($data[$row][4]=='买卖标志' and $company=='方正证券') or ($data[$row][4]=='操作' and $company=='长江证券'))
continue; //skip 1st row;
else{
echo json_encode(array(
"status" => "-1",
"row1"=> $data[$row],
'company'=> $company,
"msg" => "文件格式不正确或与证券公司不匹配,请重试!",
));
return false;
}
}
//处理时间字段, 方正证券格式: hhmmss需要特别处理, 长江证券时间格式正常: hh:mm:ss
$tm = $data[$row][1]; //format $time
if ($tm == 0) $data[$row][1] = '00:00:00';
elseif($company=='方正证券') $data[$row][1] = substr($tm, 0, -4) . ':' . substr($tm, -4, 2) . ':' . substr($tm, -2);
//处理长江证券的改动:去掉item 9,15,重置键名
if($company=='长江证券'){
unset($data[$row][9]);
unset($data[$row][15]);
$data[$row]=array_values($data[$row]);
$maxcol = count($data[$row]); //重置 maxcol
}
/**
* addslashes处理
* 方正证券14 其他费用,15:备注(需要处理)
* 长江证券14备注(需要处理),15:交易市场
*/
$data[$row][14] = addslashes($data[$row][14]); // add slash avoid sql clash
$data[$row][15] = addslashes($data[$row][15]); // add slash avoid sql clash
// duplicate check for each row
if (recordDupCheck($data[$row], $mysqli,$company)) {
$msg[] = addslashes("Row $row exist. Skip!
");
continue;
}
//else var_dump($data[$row]);
$values = ''; //initial $values;
for ($col = 0; $col < $maxcol; $col++) {
$values .= "'" . $data[$row][$col] . "',";
}
$values = rtrim($values, ','); //如果需要,此行去除末尾逗号(,)
if($company=='方正证券') {
$sql = <<query($sql) or die("Data upload failure: " . $sql);
unset($values); //release $values;
$msg[] = addslashes("Row $row uploaded.
");
}
$msg[] = addslashes("All data uploaded!");
$mysqli->close();
return $msg;
}
/**
* Duplicate check of each row by given $row
* @param $row: data of 1 row
* @param $mysqli: mysqli handle
* @return bool return true if record exist
*/
function recordDupCheck($row,$mysqli,$company): bool
{
if($company=='方正证券') {
$sql = <<< EOF
select *
from trade_record
where
tdate = '$row[0]'
and ttime = '$row[1]'
and ts_code = '$row[2]'
and note = '$row[15]'
EOF;
}elseif($company=='长江证券') {
$sql = <<< EOF
select *
from trade_record_cj
where
tdate = '$row[0]'
and ttime = '$row[1]'
and ts_code = '$row[2]'
and note = '$row[14]'
EOF;
}
$result=$mysqli->query($sql) or die($sql."
\n");
$r = $result->num_rows;
$result->free();
if($r > 0) return true;
else return false;
}