如何在PhpSpreadsheet\Reader\Xlsx中设置编码?

问题描述 投票:0回答:2

我想使用PhpSpreadsheet将xlsx转换为pdf,成功了。 但xlsx中的中文单词是错误的。 并且找不到setInputEncoding方法。 我能做些什么?请给我指导

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load($public['root'].'/' . $fileName);
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Mpdf');
$pdfName = str_replace($extension, 'pdf', $fileName);
$writer->save($public['root'].'/' . $pdfName);
php encode phpspreadsheet
2个回答
0
投票

您可以在 xlsx 文件中设置字体系列。

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load($public['root'].'/' . $fileName);

$styleArray = array(
    'font'  => array(
        'name'  => 'Verdana' // change your font
    ));

$spreadsheet->getDefaultStyle()->applyFromArray($styleArray);

0
投票
  • 首先,我下载了yahei.ttf并将其放在

    mpdf/ttfonts

  • 然后在

    mpdf/src/Config/FontVariables.php
    中注册。

  • 最后,找到

    PhpSpreadsheet/Writer/Pdf/Mypdf.php
    处的第41行,并像这样更改代码:

    $pdf = $this->createExternalWriterInstance(
        array_merge($config, ['default_font' => 'yahei'])
    );
    $pdf->setDisplayMode('fullpage');
    $pdf-> useAdobeCJK = TRUE;
    $pdf->autoScriptToLang = true;
    $pdf-> autoLangToFont = true;
    
© www.soinside.com 2019 - 2024. All rights reserved.