Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    parser di .xlsx formattati

    Dovrei realizzare un parser di documenti excel che presentano celle con grassetti e corsivi.
    Cercando in giro ho trovato questa https://github.com/PHPOffice/PhpSpreadsheet libreria che permette di riconoscere il testo con stili.
    Una lettura di una cella restituisce un oggetto PHPExcel_RichTex. Vorrei convertirlo in html: convertire i grassetti in <bold>text</bold> e lo stesso per i corsivi.
    Provando però il codice trovato qui https://stackoverflow.com/questions/...using-phpexcel il metodo getHTML() non restituisce nulla. Conoscete altri metodi per convertire le celle in html? O riuscite a capire quale potrebbe essere l'errore che ho fatto?

    Il mio codice è semplicemente questo
    codice:
    <?php
    header('Content-Type: text/html; charset=utf-8');
    ?>
    <pre><?php
    require 'vendor/autoload.php';
    require 'RichTextService.php';
    
    
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
    use App\Services\RichTextService;
    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
    $spreadsheet = $reader->load("excel.xlsx");
    $B3 = $spreadsheet->getActiveSheet()->getCell('B3')->getValue();
    $richtextService = new RichTextService();
    $html = $richtextService->getHTML($B3);
    
    
    print_r($html);
    ?>
    Ultima modifica di jimbo0; 19-04-2018 a 01:38

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    Ho risolto, il problema era banale: nel mio codice ho dei namespace, quindi il check
    codice:
    if($value instanceof PHPExcel_RichText) {...}
    nel metodo getHTML() del codice su stackoverflow non si verificava mai.

    Comunque alla fine mi sono riscritto la funzione, semplificandola e gestendo solo quello che mi interessa:
    codice:
    function RichTextToHTML($richElements){
        $html="";
        foreach($richElements as $richElement){
            $el = $richElement->getText();
            if($richElement->getFont()){
                if($richElement->getFont()->getBold()) {
                    $el = '<b>'.$el.'</b>';
                }
                if($richElement->getFont()->getItalic()) {
                    $el = '<em>'.$el.'</em>';
                }
                if($richElement->getFont()->getUnderline()!=="none") {
                    $el = '<u>'.$el.'</u>';
                }
            }
            $html .= $el;
    
    
        }
        return $html;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.