@agressor221
Программист новичОк

PhpSpreadsheet — не работает формула «сумма прописью» после сохранения шаблона .xlsx?

Здравствуйте!
Использую данную библиотеку PhpSpreadsheet для создания документов в .exel
в исходном шаблоне у меня вставлена формула "Сумма прописью без макросов" взятая с данного ресурса https://www.e-du.ru/2016/05/excel-summa-propisyu.html
Она работает отлично, но после форматирования документа через библиотеку PhpSpreadsheet формула не работает и выдает ошибку #ИМЯ? и не чего не могу поделать, пробовал в шаблоне оставить ячейку свободной и вставить формулы через "$worksheet->setCellValue" но все мои попытки б без успешные.
Прошу помогите пожалуйста...Буду очень благодарен и не останусь в долгу!
В приложении исходный код который я использую.
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\IWriter;


$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('templates/template.xlsx');

$worksheet = $spreadsheet->getActiveSheet();
    
$worksheet->setCellValue('A21', '=SUBSTITUTE(TEXT(TRUNC(B6,0),"# ##0_ ") & "(" & SUBSTITUTE(PROPER(INDEX(n_4,MID(TEXT(B6,n0),1,1)+1)&INDEX(n0x,MID(TEXT(B6,n0),2,1)+1,MID(TEXT(B6,n0),3,1)+1)&IF(-MID(TEXT(B6,n0),1,3),"миллиард"&VLOOKUP(MID(TEXT(B6,n0),3,1)*AND(MID(TEXT(B6,n0),2,1)-1),мил,2),"")&INDEX(n_4,MID(TEXT(B6,n0),4,1)+1)&INDEX(n0x,MID(TEXT(B6,n0),5,1)+1,MID(TEXT(B6,n0),6,1)+1)&IF(-MID(TEXT(B6,n0),4,3),"миллион"&VLOOKUP(MID(TEXT(B6,n0),6,1)*AND(MID(TEXT(B6,n0),5,1)-1),мил,2),"")&INDEX(n_4,MID(TEXT(B6,n0),7,1)+1)&INDEX(n1x,MID(TEXT(B6,n0),8,1)+1,MID(TEXT(B6,n0),9,1)+1)&IF(-MID(TEXT(B6,n0),7,3),VLOOKUP(MID(TEXT(B6,n0),9,1)*AND(MID(TEXT(B6,n0),8,1)-1),тыс,2),"")&INDEX(n_4,MID(TEXT(B6,n0),10,1)+1)&INDEX(n0x,MID(TEXT(B6,n0),11,1)+1,MID(TEXT(B6,n0),12,1)+1)),"z"," ")&IF(TRUNC(TEXT(B6,n0)),"","Ноль ")&") рубл"&VLOOKUP(MOD(MAX(MOD(MID(TEXT(B6,n0),11,2)-11,100),9),10),{0,"ь ";1,"я ";4,"ей "},2)&RIGHT(TEXT(B6,n0),2)&" копе"&VLOOKUP(MOD(MAX(MOD(RIGHT(TEXT(B6,n0),2)-11,100),9),10),{0,"йка";1,"йки";4,"ек"},2)," )",")")');

$retVal = $worksheet->getCell('A21')->getCalculatedValue();



$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setPreCalculateFormulas(false);
$writer->save('test.xlsx');
  • Вопрос задан
  • 662 просмотра
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы