Я новичок в phpexcel, так что прости меня, если это глупый вопрос,
У меня есть сценарий PHP, который берет файл Excel и загружает его на мой сервер SQL. он берет данные из разных столбцов и вставляет их в две разные таблицы. это работает нормально, пока столбцы в таблице Excel остаются прежними, например: столбец 1 = имя, столбец 2 = возраст и т. д.
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 2; $row <= $highestRow; $row++){
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE, FALSE);
$Name = trim($rowData[0][0]);
$Age = trim($rowData[0][1]);
$Address = trim($rowData[0][2]);
}
Это вкратце то, что у меня есть. как видите, переменная $ name всегда будет принимать значение из первого столбца в файле и так далее. моя проблема в том, что загружаемый файл не всегда будет в таком порядке. например, одна неделя файла будет иметь имя в столбце 1 и возраст в столбце 2, но возраст следующей недели будет в столбце 1 и имя в столбце 2.
Столбцы имеют заголовки, которые всегда будут соответствовать данным в строке, поэтому я хотел бы использовать заголовки следующим образом.
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 2; $row <= $highestRow; $row++){
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE, FALSE);
$Name = trim($rowData[0]['NAME']);
$Age = trim($rowData[0]['AGE']);
$Address = trim($rowData[0]['ADDRESS']);
sql= "insert into dbo.mainTable (NAME,AGE,ADDRESS) VALUES ('$Name','$Age','$Address')";
$stmt = sqlsrv_query($db,$sql);
}
Я думаю, что вы можете сделать что-то подобное с ассоциативными массивами, но я просто не могу понять, как это сделать. Я нашел некоторые вещи, близкие к тому, что я прошу, но когда я попробую любой из них, это просто не сработает. если есть способ сделать это легко, это было бы здорово. Это мое последнее средство, так как я искал в Интернете почти неделю, так
заранее спасибо.
UPDATE
Я добавил простой запрос так же, как и сейчас. причина, по которой я делаю это так, состоит в том, что полный запрос - это запрос на обновление, и если IF rowcount = 0, затем вставьте плюс, если строки меняются в тот момент, когда мне просто нужно перейти к списку выше и изменить индекс.