Кросс умножить текстовые данные в PHP

У меня есть два листа Excel

Столбцы первого листа:

ColA ColB ColC ColD ColE (containing M rows) ~700 rows  
A     B    C    D    E  
AA   BB   CC    DD   EE

Колонны второго листа:

Col1 Col2 Col3 Col4 (containing N rows) ~ 100 rows  
1     2    3    4
11    22   33   44 

Окончательный набор результатов:

ColA ColB ColC ColD ColE Col 1 Col2 Col3 Col4  
A    B     C    D    E   1      2    3    4  
A    B     C    D    E   11    22    33   44  
AA   BB   CC   DD   EE   1      2     3    4  
AA   BB   CC   DD   EE   11    22    33    44  

Я хочу получить итоговую электронную таблицу, которая будет перекрестным умножением двух вышеупомянутых листов: строк M X N и скопировать их обратно в csv/excel.

Я использую PHP для перекрестного соединения двух листов. Я преобразовал оба листа в csv, поэтому мой первый лист - csv1, а второй - csv2.

<?php
$csv1 = array_map('str_getcsv', file('Book1.csv'));
$csv2 = array_map('str_getcsv', file('Book2.csv'));

$ans = array();

foreach ($csv1 as $key1) {
    foreach ($csv2 as $key2) {
        $ans[] = $key1 . ' ' . $key2;
    }
}

$fp = fopen('file.csv','w');

foreach($ans as $fields) {
    fputcsv($fp, $fields);
}
?>

По какой-то причине это не работает. Сервер не отвечает, и файл не заполняется.

2 ответа

Вам придется написать некоторый код VBA. Если под "быстрее" вы имеете в виду проще, почти без разработки, вставьте и добавьте два листа в Access в виде отдельных таблиц и создайте запрос с открытым соединением между двумя таблицами, выбрав все поля.

Если вы хотите сделать это исключительно в Excel, вы можете сделать это с помощью операторов INDIRECT(), ROW() и MOD(). Вы должны знать, что делать это полностью в Excel - не лучший способ вычислить около 70000 строк данных.

Другие вопросы по тегам