Gente, estou com problemas em usar essa lib, construi esse código através do onValidate do meu controle com algumas pesquisas. Eu preciso fazer alguma instalação antes? Se sim, como?
Esse é o principal video que eu usei como base: https://www.youtube.com/watch?v=YYP8iFjotDs
$rota = $this->Ini->path_doc."/".{arquivo} // esse é o nome do meu campo do controle que faz upload
include sc_url_library(“prj”, “spreadsheet”, “vendor/autoload.php”);
$libexcel = \PhpOffice\PhpSpreadsheet\IOFactory::load($rota);
$excel = $libexcel->getSheet(0);
$linhas = $excel->getHighestDataRow();
sc_begin_trans();
for ($linha = 2; $linha <= $linhas; $linha++) {
$colunaA = $excel->getCellByColumnAndRow(1, $linha);
$codigo = $colunaA->getValue();
$colunaB = $excel->getCellByColumnAndRow(2, $linha);
$refcliente = $colunaB->getValue();
$colunaC = $excel->getCellByColumnAndRow(3, $linha);
$descpt = $colunaC->getValue();
$colunaG = $excel->getCellByColumnAndRow(7, $linha);
$qty = $colunaG->getValue();
// Validação dos dados antes de realizar o update
if (empty($codigo) || empty($refcliente) || empty($descpt) || empty($qty)) {
// Se algum valor estiver vazio, exibe um alerta
sc_alert("Erro: Todos os campos devem ser preenchidos. Linha: $linha");
sc_commit_trans(); // Garante que a transação seja salva mesmo que não tenha update
continue; // Pula para a próxima linha
}
// A quantidade deve ser numerica
if (!is_numeric($qty)) {
sc_alert("Erro: A quantidade deve ser um número válido. Linha: $linha");
sc_commit_trans();
continue;
}
// Atualiza o banco de dados se as validações passarem
$update = "UPDATE ORDERSALES_Itens SET RefCliente = '" . addslashes($refcliente) . "', Desc_Produto = '" . addslashes($descpt) . "', Qty_Order = '" . addslashes($qty) . "' WHERE CODIGO = '" . addslashes($codigo) . "'";
sc_exec_sql($update);
}
// Finaliza a transação
sc_commit_trans();