Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
P.S. Только расставляя метки наткнулся на Работа с большими файлами экселя. Хабрить надо было, а не гуглить — много бы времени сэкономил.
$questions = array();
foreach(new DirectoryIterator(realpath('data')) as $file)
{
if($file->isFile())
{
$path = "zip://" . $file->getPathname() . '#word/document.xml';
_parse($path, $questions);
}
}
function _parse($path, &$questions)
{
$xml = simplexml_load_file($path);
$ns = $xml->getDocNamespaces();
$xml->registerXPathNamespace('w', $ns['w']);
foreach($xml->xpath('/w:document/w:body/w:tbl') as $elem)
{
$keyN = preg_replace('/\d/', '', $attr['r']);
$out[$file][$row][$keyN] = isset($attr['t']) ? $sharedStringsArr[$value] : $value;
$out[$file][$row][$cell] = isset($attr['t']) ? $sharedStringsArr[$value] : $value;
$cell++;$handle = @opendir(TEMP_DIR_PATH . '/' . $name.'/xl/worksheets');
$out = array();
while ($file = @readdir($handle)) {
//проходим по всем файлам из директории /xl/worksheets/
if ($file != "." && $file != ".." && $file != '_rels') {
$xml = simplexml_load_file(TEMP_DIR_PATH . '/' . $name.'/xl/worksheets/' . $file);
//по каждой строке
$row = 0;
foreach ($xml->sheetData->row as $item) {
$out[$file][$row] = array();
//по каждой ячейке строки
foreach ($item as $child) {
$attr = $child->attributes();
$value = isset($child->v)? (string)$child->v:false;
$keyN = preg_replace('/\d/', '', $attr['r']);
$out[$file][$row][$keyN] = isset($attr['t']) ? $sharedStringsArr[$value] : $value;
}
$row++;
}
}
}
return $out;
Разбираем xlsx в PHP без готовых библиотек