销售提成php使⽤PhpOfficephpspreadsheet导⼊excel⽂件
//上传⽂件
public function importAction()
{
// php上传⽂件⽅法
$filename = $_FILES["file"]["name"];
//上传临时⽂件
$tmp_name = $_FILES["file"]["tmp_name"];枇杷怎么读
if (empty($tmp_name) or !file_exists( $tmp_name)) {
$this->error( "⽂件不存在");
}
if (substr($filename, -3) !== 'xls') {
$this->error( "请导⼊合法的Xls⽂件");
}
//导⼊类库⾃⼰封装的
$ParExecl = new ParExecl();
$inputFileType = 'Xls';
$sheetname = ['归并关系模板', '商品备案数据'];
$data = $ParExecl->importSomeExecl($tmp_name, $inputFileType, $sheetname);
if(!$data){
$this->error("请导⼊合法的Xls⽂件");
}
/
/循环数组将数据增加⾄数据表中
foreach ($data as $one) {
print_r($one);
//执⾏添加操作
}
}
//excel ⽅法
class ParExecl
{
/**
* 使⽤PHPEXECL导⼊⼀个⼯作薄中多个数据表
*
* @param string $file ⽂件地址
* @param string $inputFileType 类型
* @param array $sheetname ⼦⼯作表名称
*
* @return array
*/
function importSomeExecl($file, $inputFileType, $sheetname)
{
/* 转码 */
$file = iconv("utf-8", "gb2312", $file);
/
/设置读取的类型
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
//设置读取的表名称
$reader->tLoadSheetsOnly($sheetname);
//加载⼯作簿⽂件的最简单⽅法识别⽂件类型并加载它,调⽤类的静态load() ⽅法\PhpOffice\PhpSpreadsheet\IOFactory
$spreadsheet = $reader->load( $file);
$sheetCount = $spreadsheet->getSheetCount();
//获取表中数据
约定的近义词
$tableData = lf::getTableData($sheetCount, $spreadsheet);
//把头部信息设置成key值
$data = lf::AsmbleKeyValue($tableData);
return $data;
}
private function getTableData( $sheetCount, $spreadsheet){
$DataAry = array();
//获取多个表的数据
if( $sheetCount >1){
$data = array();
for ($i = 0; $i < $sheetCount; $i++) {
$sheet = $spreadsheet->getSheet($i);
$sheetData = $sheet->toArray(null, true, true, true);
if($i === 0){
七年级上册语文第一单元作文
$data = $sheetData;
西安到云南}el{
foreach($data as $dvalue){
foreach ($sheetData as $value) {
if ($dvalue['E'] === $value['F']) {
array_push($value, $dvalue['F'], $dvalue['N']);
$DataAry[] = $value;
}
}
}
}
}
}el{
//只有⼀个表的时候
$DataAry = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
}
return $DataAry;
}豆腐炒鸡蛋的做法
private function AsmbleKeyValue($oldData){
$keyAry =array();
$DataAry =array();
foreach( $oldData as $k=>$subData ){
if($k == 0){
$keyAry = $subData;
三五成群打一生肖
}el{
foreach($subData as $ke=>$value){
if($keyAry){
if (array_key_exists($ke, $keyAry)) {
$DataAry[$k][ $keyAry[$ke]] = $value;
}
}
}
}
}
return $DataAry;
}
}
由于 我是想获取⼀个两个表中的不同数据,所以使⽤的是ABCD 列进去拿 的数据,只有要是使⽤多个表的数据,可以直接进⾏读取,
$sheetCount = $spreadsheet->getSheetCount();
$sheetData =array();
for ($i = 0; $i < $sheetCount; $i++) {
小白菜饺子$sheet = $spreadsheet->getSheet($i);
$sheetData[$i][] = $sheet->toArray(null, true, true, true);
}
单个表格的时候
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
就是单个表格的数据
其实使⽤很简单,这个类库写的不太好,有时间在优化下;