Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 2 / 2
Регистрация: 02.02.2021
Сообщений: 206

Создает "Кривой" эксель файл

22.12.2022, 14:12. Показов 574. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите, с чем может быть связана такая проблема? php скрипт открывает эксель файл, обрабатывает и сохраняет его, и когда отправляет на закачку пользователю - сохраняет туда ошибки и файл получается кривой, если выполнить сначала код сохранения в файл, а потом в отдельном скрипте, или закоммментить эти строкит, то файл скачивается с сервера нормальный :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$fN = "Реестр РД (в процессе наполнения).xlsx";
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load($fN); // подключить Excel-файл
$excel->setActiveSheetIndex(0); // получить данные из указанного листа по номеру.
$sheet = $excel->getActiveSheet();
$cells = $sheet-> getCellCollection();
for (
    $row = 5; $row <= $cells->getHighestRow(); $row++) {        //цикл считывания с 7ой строки
    /*выбираем колонки для считывания */
    $array[$row]['shifr_zakazch'] = ($cells->get('H' . $row)) ? $cells->get('H' . $row)->getValue() : '';
    if ( $array[$row]['shifr_zakazch'] != NULL) {
        $shifr = $array[$row]['shifr_zakazch'];
        $save_shifr = $array[$row]['shifr_zakazch'];
        $pieces = explode("-", $shifr); // разбив по разделителю
        $pieces0 = str_replace('="', "", $pieces[0]); // заменяем
        $pieces1 = str_replace('.', "/", $pieces[1]); // заменяем
        $pieces1 .=".Р"; // добавляем
        $shifr =  $pieces1. '-';
        $array[$row]['shifr1'] = ($cells->get('A' . $row)) ? $cells->get('A' . $row)->getValue() : '';
        $shifr .= $array[$row]['shifr1'] . '-';
        $array[$row]['shifr2'] = ($cells->get('C' . $row)) ? $cells->get('C' . $row)->getValue() : '';
        $shifr .= $array[$row]['shifr2'] . '-';
        $array[$row]['shifr3'] = ($cells->get('I' . $row)) ? $cells->get('I' . $row)->getValue() : '';
        $shifr .= $array[$row]['shifr3'];
        $array[$row]['shifr4'] = ($cells->get('J' . $row)) ? $cells->get('J' . $row)->getValue() : '';
        $shifr .= $array[$row]['shifr4'];
        //$sheet->getCell('H' . $row)->setValue($array[$row]['shifr_zakazch']);
        $key = array_search($shifr, $shifr_array); // ;
        if ($key!==FALSE)
        {
            $sheet->getCell('S' . $row)->setValue( $arr7[$key]);
            $sheet->getCell('U' . $row)->setValue( $arr6[$key]);
            echo '<br>';
            $j++;
        }
    }
}
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($excel, 'Xls');
$writer->save('Реестр (загруженный).xls');
если сразу после этого кода выполнить вот этот :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Читать файл
$filename = 'Реестр (загруженный).xls';
//Проверка на существование файла
if(file_exists($filename)) {
//Определение информации заголовка
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: 0");
    header('Content-Disposition: attachment; filename="'.basename($filename).'"');
    header('Content-Length: '. filesize($filename));
    header('Pragma: public');
//Очистить выходной буфер системы
    flush();
//Считайте размер файла
    readfile($filename);
//Завершить работу со скриптом
    die();
}
else{
    echo "Файл не существует.";
}
то скачивается "битый " файл с технической информацией от ПХП со страницы внутри файла. Если это выполнить отдельно -= то скачивается нормальный файл.
Подскажите, с чем может быть связано?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2022, 14:12
Ответы с готовыми решениями:

Create table создает кривой файл
HI Создаю файл (таблицу) для отчета в формате dbf.... (рабочая база Pdox ч/з BDE) procedure TForm1.Button1Click(Sender: TObject);...

Почему при открытии файла эксель, появляется из фонового скрытого режима мой файл эксель
Добрый день уважаемые форумчане, столкнулся с такой проблеммой. Есть небольшая программка которая при запуске и нажатии кнопки запускает...

Cmake под виндой создает кривой Makefile
во первых он добавляет это !IF &quot;$(OS)&quot; == &quot;Windows_NT&quot; NULL= !ELSE NULL=nul !ENDIF SHELL = cmd.exe mingw падает с ошибкой...

6
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
22.12.2022, 15:35
Цитата Сообщение от MixanMM Посмотреть сообщение
сохраняет туда ошибки
Какие?

Как минимум надо убрать любой вывод на экран, например echo на 32 строке.
0
4 / 2 / 2
Регистрация: 02.02.2021
Сообщений: 206
12.01.2023, 10:11  [ТС]
подразобрался, вот тут :
PHP
1
$writer->save('Реестр (загруженный).xls');
выдает ошибку.
Если в отдельный скрипт скачивание файла сделать, то скачивается с сервера нормальный файл
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
12.01.2023, 16:43
Цитата Сообщение от MixanMM Посмотреть сообщение
выдает ошибку.
Какую?
0
4 / 2 / 2
Регистрация: 02.02.2021
Сообщений: 206
16.01.2023, 08:45  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Какую?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
16.01.2023, 12:45
Может незя нулл класть в ячейку? Я не работал с этой либой, чисто по коду ошибки.
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
16.01.2023, 16:57
MixanMM, предположу, что у вас PHP 8.1 или 8.2, а библиотека версии 1.25.2 или ниже, поддерживающая PHP 7.3-8.0.

Попробуйте обновить PhpSpreadsheet до последней версии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2023, 16:57
Помогаю со студенческими работами здесь

Составить программу, которая создает каталог, создает в нем файл, переименовывает этот файл и удаляет этот файл, а потом удаляет каталог
Составить программу, которая создает каталог, создает в нем файл, переименовывает этот файл и удаляет этот файл, а потом удаляет каталог.

В папке OC создает подпапку 1, в которой создает текстовые файлы 1txt, 2txt Затем переименовывает файл 1txt в 3
bat в папке OC создает подпапку 1, в которой создает текстовые файлы 1.txt, 2.txt. Затем переименовывает файл 1.txt в 3.txt. Прошу...

Написать bat-файл, который создает bat-файл, который создает текстовый файл :)
Необходимо составит bat файл, который создаст bat файл и в созданном новом bat файле создастся документ txt. (Весь код пишется в одном...

Сделали файл эксель для наших партнеров немецких, но файл не работает
Сделали файл в эксель для наших партнеров немецких, но файл не работает. использовали английские формулы &quot;If, iserror, Vlookup,...

Открыть Лас, Эксель файл по файл диалогу (выбор)
Открыть Лас или Эксель файл по файл диалогу (выбор) и считать в таблицу (скрытная, рабочая или промежуточная) затем отобразить данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru