Phpspreadsheet中文文档2(翻译软件版)

由于phpoffice/phpexcel(此包已被放弃,不再维护。作者建议改用phpoffice/phpspreadsheet包。)

最近开始使用Phpspreadsheet,发现中文文档不全。自己英文水平一般,又比较着急开发。所以贴上google翻译版,着急的朋友可以先凑合看看,英文底子好的同学可以直接忽略本帖。

本贴仅供参考。
本贴仅供参考。
本贴仅供参考。


原文地址:

Phpspreadsheet官方文档

文件 » 主题 ” 读写文件

读写文件

从体系结构您已经知道,使用基本PhpSpreadsheet类无法对持久性存储进行读写。为此,PhpSpreadsheet提供读者和作家,这是实现\PhpOffice\PhpSpreadsheet\Reader\IReader\PhpOffice\PhpSpreadsheet\Writer\IWriter

\ PhpOffice \ PhpSpreadsheet \ IOFactory

PhpSpreadsheet API提供了多种创建 \PhpOffice\PhpSpreadsheet\Reader\IReader\PhpOffice\PhpSpreadsheet\Writer\IWriter实例的方法:

通过直接创建\PhpOffice\PhpSpreadsheet\IOFactory。下面的所有示例都演示了直接创建方法。请注意,您也可以使用\PhpOffice\PhpSpreadsheet\IOFactory该类来执行此操作。

\PhpOffice\PhpSpreadsheet\Reader\IReader使用创建\PhpOffice\PhpSpreadsheet\IOFactory
有两种方法可以将文件读入PhpSpreadsheet:使用自动文件类型解析或显式。

自动文件类型解析可\PhpOffice\PhpSpreadsheet\Reader\IReader使用PhpSpreadsheet 检查不同的 分布。如果其中之一可以加载指定的文件名,则使用该文件名加载文件\PhpOffice\PhpSpreadsheet\Reader\IReader。显式模式要求您指定 \PhpOffice\PhpSpreadsheet\Reader\IReader应使用的模式。

您可以使用以下代码示例在自动文件类型解析模式下创建\PhpOffice\PhpSpreadsheet\Reader\IReader实例 \PhpOffice\PhpSpreadsheet\IOFactory:

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("05featuredemo.xlsx");

此功能的典型用法是当您需要读取用户上传的文件时,并且您不知道他们是在上传xls还是xlsx文件。

如果您需要在阅读器上设置一些属性(例如,仅读取数据,请参阅稍后的更多内容),则可以改用以下变体:

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile("05featuredemo.xlsx");
$reader->setReadDataOnly(true);
$reader->load("05featuredemo.xlsx");

您可以使用以下代码示例以显式模式使用创建\PhpOffice\PhpSpreadsheet\Reader\IReader实例 \PhpOffice\PhpSpreadsheet\IOFactory

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet = $reader->load("05featuredemo.xlsx");

请注意,自动类型解析模式比显式模式稍慢。

\PhpOffice\PhpSpreadsheet\Writer\IWriter使用创建\PhpOffice\PhpSpreadsheet\IOFactory
您可以\PhpOffice\PhpSpreadsheet\Writer\IWriter使用创建实例 \PhpOffice\PhpSpreadsheet\IOFactory

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
$writer->save("05featuredemo.xlsx");

Excel 2007(SpreadsheetML)文件格式

Xlsx文件格式是PhpSpreadsheet的主要文件格式。它允许将内存电子表格输出到.xlsx文件。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Xlsx 阅读电子表格

您可以使用以下代码读取.xlsx文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load("05featuredemo.xlsx");

仅读取数据

您可以在阅读器上设置选项setReadDataOnly,以指示阅读器忽略样式,数据验证等,而仅读取单元格数据:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load("05featuredemo.xlsx");

仅阅读特定的工作表

您可以在阅读器上设置选项setLoadSheetsOnly,以指示阅读器仅加载具有给定名称的图纸:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setLoadSheetsOnly(["Sheet 1", "My special sheet"]);
$spreadsheet = $reader->load("05featuredemo.xlsx");

仅读取特定的单元格

您可以在阅读器上设置选项setReadFilter,以指示阅读器仅加载与给定规则匹配的单元格。读取过滤器可以是任何实现的类 \PhpOffice\PhpSpreadsheet\Reader\IReadFilter。默认情况下,使用读取所有单元格\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter

以下代码将仅读取Excel文件中任何工作表的第1行和第20至30行:

class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {

    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }
        return false;
    }
}

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadFilter( new MyReadFilter() );
$spreadsheet = $reader->load("06largescale.xlsx");

\ PhpOffice \ PhpSpreadsheet \ Writer \ Xlsx 编写电子表格

您可以使用以下代码编写.xlsx文件:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save("05featuredemo.xlsx");

公式预计算

默认情况下,该编写器会预先计算电子表格中的所有公式。在大型电子表格上,这可能会很慢,甚至可能是不必要的。但是,您可以禁用公式预计算:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->setPreCalculateFormulas(false);
$writer->save("05featuredemo.xlsx");

Office 2003兼容性包

由于Office2003兼容性包中的错误,打开Xlsx电子表格时可能会出现一些小问题(主要与公式计算有关)。您可以使用以下代码启用Office2003兼容性:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->setOffice2003Compatibility(true);
$writer->save("05featuredemo.xlsx");

Office2003兼容性选项仅应在需要时使用,因为它会禁用多个Office2007文件格式选项,从而导致功能较低的Office2007电子表格。

Excel 5(BIFF)文件格式

Xls文件格式是旧的Excel文件格式,已在PhpSpreadsheet中实现,以提供统一的方式来创建.xlsx和.xls文件。它基本上是PEAR Spreadsheet_Excel_Writer的修改版本,尽管它已被扩展并且比旧的PEAR库具有更少的限制和更多的功能。这可以通过BIFF8读取所有使用OLE2的BIFF版本:BIFF5(由Office 95引入),但不能读取早期版本。

Xls文件格式将不再进行开发,它只是为PhpSpreadsheet提供了其他文件格式。

Excel5(BIFF)限制请注意,BIFF文件格式在样式设置单元格和通过PHP处理大型电子表格方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Xls 阅读电子表格

您可以使用以下代码读取.xls文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$spreadsheet = $reader->load("05featuredemo.xls");

仅读取数据

您可以在阅读器上设置选项setReadDataOnly,以指示阅读器忽略样式,数据验证等,而仅读取单元格数据:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load("05featuredemo.xls");

仅阅读特定的工作表

您可以在阅读器上设置选项setLoadSheetsOnly,以指示阅读器仅加载具有给定名称的图纸:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$reader->setLoadSheetsOnly(["Sheet 1", "My special sheet"]);
$spreadsheet = $reader->load("05featuredemo.xls");

仅读取特定的单元格

您可以在阅读器上设置选项setReadFilter,以指示阅读器仅加载与给定规则匹配的单元格。读取过滤器可以是任何实现的类 \PhpOffice\PhpSpreadsheet\Reader\IReadFilter。默认情况下,使用读取所有单元格\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter

以下代码将仅读取Excel文件中任何工作表的第1行和第20至30行:

class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {

    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }
        return false;
    }
}

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$reader->setReadFilter( new MyReadFilter() );
$spreadsheet = $reader->load("06largescale.xls");

\ PhpOffice \ PhpSpreadsheet \ Writer \ Xls 编写电子表格

您可以使用以下代码编写.xls文件:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xls($spreadsheet);
$writer->save("05featuredemo.xls");

Excel 2003 XML文件格式

Excel 2003 XML文件格式是可以在较早版本的Microsoft Excel中使用的文件格式。

Excel 2003 XML限制请注意,Excel 2003 XML格式在样式设置单元格和通过PHP处理大型电子表格方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Xml 阅读电子表格

您可以使用以下代码读取Excel 2003 .xml文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
$spreadsheet = $reader->load("05featuredemo.xml");

仅读取特定的单元格

您可以在阅读器上设置选项setReadFilter,以指示阅读器仅加载与给定规则匹配的单元格。读取过滤器可以是任何实现的类 \PhpOffice\PhpSpreadsheet\Reader\IReadFilter。默认情况下,使用读取所有单元格\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter

以下代码将仅读取Excel文件中任何工作表的第1行和第20至30行:

class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {

    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }
        return false;
    }

}

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
$reader->setReadFilter( new MyReadFilter() );
$spreadsheet = $reader->load("06largescale.xml");

象征性LinK(SYLK)

符号链接(SYLK)是Microsoft文件格式,通常用于在应用程序(尤其是电子表格)之间交换数据。SYLK文件通常具有.slk后缀。它仅由可显示的ANSI字符组成,可以很容易地由其他应用程序(例如数据库)创建和处理。

SYLK限制请注意,SYLK文件格式在样式设置单元格和通过PHP处理大型电子表格方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Slk 阅读电子表格

您可以使用以下代码读取.slk文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
$spreadsheet = $reader->load("05featuredemo.slk");

仅读取特定的单元格

您可以在阅读器上设置选项setReadFilter,以指示阅读器仅加载与给定规则匹配的单元格。读取过滤器可以是任何实现的类 \PhpOffice\PhpSpreadsheet\Reader\IReadFilter。默认情况下,使用读取所有单元格\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter

以下代码将仅读取SYLK文件中任何工作表的第1行和第20至30行:

class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {

    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }
        return false;
    }

}

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
$reader->setReadFilter( new MyReadFilter() );
$spreadsheet = $reader->load("06largescale.slk");

开放/自由办公室(.ods)

Open Office或Libre Office .ods文件是Open Office或Libre Office Calc文件的标准文件格式。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Ods 阅读电子表格

您可以使用以下代码读取.ods文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
$spreadsheet = $reader->load("05featuredemo.ods");

仅读取特定的单元格

您可以在阅读器上设置选项setReadFilter,以指示阅读器仅加载与给定规则匹配的单元格。读取过滤器可以是任何实现的类 \PhpOffice\PhpSpreadsheet\Reader\IReadFilter。默认情况下,使用读取所有单元格\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter

以下代码将仅读取Calc文件中任何工作表的第1行和第20至30行:

class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {

    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }
        return false;
    }

}

$reader = new PhpOffice\PhpSpreadsheet\Reader\Ods();
$reader->setReadFilter( new MyReadFilter() );
$spreadsheet = $reader->load("06largescale.ods");

CSV(逗号分隔值)

CSV(逗号分隔值)通常与其他系统一起用作导入/导出文件格式。PhpSpreadsheet允许读取和写入CSV文件。

CSV限制请注意,CSV文件格式在样式单元格,数字格式等方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Reader \ Csv 读取CSV文件

您可以使用以下代码读取.csv文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->load("sample.csv");

设置CSV选项

CSV文件通常不是真正的“逗号分隔”,或使用分号(;)作为分隔符。您可以\PhpOffice\PhpSpreadsheet\Reader\Csv在读取CSV文件之前指示 一些选项。

分隔符将被自动检测,因此在大多数情况下,无需指定分隔符。但是,如果自动检测不适合用例,则可以手动设置。

请注意,\PhpOffice\PhpSpreadsheet\Reader\Csv默认情况下假定加载的CSV文件是UTF-8编码的。如果您正在读取在Microsoft Office Excel中创建的CSV文件,则正确的输入编码可能是Windows-1252(CP1252)。始终确保正确设置了输入编码。

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$reader->setInputEncoding('CP1252');
$reader->setDelimiter(';');
$reader->setEnclosure('');
$reader->setSheetIndex(0);

$spreadsheet = $reader->load("sample.csv");

阅读特定的工作表

CSV文件只能包含一个工作表。因此,您可以指定要从CSV中读取的工作表:

$reader->setSheetIndex(0);

读入现有电子表格

使用CSV文件时,可能会出现要将CSV数据导入到现有Spreadsheet对象中的情况。以下代码将CSV文件加载到$spreadsheet包含某些工作表的现有文件中,并导入到第6个工作表中:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$reader->setDelimiter(';');
$reader->setEnclosure('');
$reader->setSheetIndex(5);

$reader->loadIntoExisting("05featuredemo.csv", $spreadsheet);

\ PhpOffice \ PhpSpreadsheet \ Writer \ Csv 编写CSV文件

您可以使用以下代码编写.csv文件:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->save("05featuredemo.csv");

设置CSV选项

CSV文件通常不是真正的“逗号分隔”,或使用分号(;)作为分隔符。您可以\PhpOffice\PhpSpreadsheet\Writer\Csv在编写CSV文件之前指示 一些选项:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setDelimiter(';');
$writer->setEnclosure('');
$writer->setLineEnding("\r\n");
$writer->setSheetIndex(0);

$writer->save("05featuredemo.csv");

写一个特定的工作表

CSV文件只能包含一个工作表。因此,您可以指定要写入CSV的工作表:

$writer->setSheetIndex(0);

公式预计算

默认情况下,该编写器会预先计算电子表格中的所有公式。在大型电子表格上,这可能会很慢,甚至可能是不必要的。但是,您可以禁用公式预计算:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setPreCalculateFormulas(false);
$writer->save("05featuredemo.csv");

写入UTF-8 CSV文件

CSV文件以UTF-8编写。如果它们不包含ASCII范围之外的字符,则无需执行其他任何操作。但是,如果文件中包含此类字符,则应明确包含BOM表文件头;如果不正确,Excel将无法正确解释这些字符。可以使用以下代码启用此功能:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setUseBOM(true);
$writer->save("05featuredemo.csv");

十进制和千位分隔符

如果要导出的工作表包含带小数或千位分隔符的数字,则在进行导出之前,应考虑要对那些字符使用哪些字符。

默认情况下,PhpSpreadsheet在服务器的区域设置中查找以决定要使用的字符。但是为避免出现问题,建议如下所示显式设置字符。

英文用户将要在导出之前使用它:

\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setDecimalSeparator('.');
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setThousandsSeparator(',');

德国用户将要使用相反的值。

\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setDecimalSeparator(',');
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setThousandsSeparator('.');

请注意,上面的代码将小数和千位分隔符设置为全局选项。这也会影响HTML和PDF的导出方式。

HTML

PhpSpreadsheet允许您以HTML格式读取或编写电子表格,以便向PC上没有电子表格应用程序的任何人快速表示其中的数据,或加载由其他脚本创建的文件,这些脚本只是创建HTML标记并为其提供.xls文件扩展。

HTML限制请注意,HTML文件格式在样式单元格,数字格式等方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Reader \ HTML 阅读电子表格

您可以使用以下代码读取.html或.htm文件:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();

$spreadsheet = $reader->load("05featuredemo.html");

HTML限制请注意,HTML阅读器仍处于试验阶段,尚不支持干净的合并单元格或嵌套表

\ PhpOffice \ PhpSpreadsheet \ Writer \ Html

请注意,\PhpOffice\PhpSpreadsheet\Writer\Html默认情况下仅输出第一个工作表。

编写电子表格

您可以使用以下代码编写.htm文件:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);

$writer->save("05featuredemo.htm");

编写所有工作表

HTML文件可以包含一个或多个工作表。如果要将所有工作表都写到一个HTML文件中,请使用以下代码:

$writer->writeAllSheets();

写一个特定的工作表

HTML文件可以包含一个或多个工作表。因此,您可以指定要写入HTML的工作表:

$writer->setSheetIndex(0);

设置HTML文件的图片根目录
在某些情况下,您需要显式设置所包含映像的根目录。例如,代替:

html
 <img src="./images/logo.jpg">

您可能想看看:

<img src="http://www.domain.com/images/logo.jpg">

您可以使用以下代码来实现此结果:

$writer->setImagesRoot('http://www.example.com');

公式预计算

默认情况下,该编写器会预先计算电子表格中的所有公式。在大型电子表格上,这可能会很慢,甚至可能是不必要的。但是,您可以禁用公式预计算:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
$writer->setPreCalculateFormulas(false);

$writer->save("05featuredemo.htm");

将生成的HTML嵌入网页中

在某些情况下,您可能希望将生成的HTML嵌入到现有网站中。\ PhpOffice \ PhpSpreadsheet \ Writer \ Html支持仅生成HTML代码的特定部分,从而使您可以在网站中使用这些部分。

支持的方法:

generateHTMLHeader()
generateStyles()
generateSheetData()
generateHTMLFooter()
generateHTMLAll()

这是一个示例,该示例独立地检索所有部分并将它们合并到结果HTML页面中:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
$hdr = $writer->generateHTMLHeader();
$sty = $writer->generateStyles(false); // do not write <style> and </style>
$newstyle = <<<EOF
<style type='text/css'>
$sty
html {
    background-color: yellow;
}
</style>
EOF;
echo preg_replace('@</head>@', "$newstyle\n</head>", $hdr);
echo $writer->generateSheetData();
echo $writer->generateHTMLFooter();

编写UTF-8 HTML文件

通过编写BOM表文件头,可以将HTML文件标记为UTF-8。可以使用以下代码启用此功能:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
$writer->setUseBOM(true);

$writer->save("05featuredemo.htm");

十进制和千位分隔符

请参阅“ \PhpOffice\PhpSpreadsheet\Writer\Csv如何控制它们的外观”部分。

PDF格式

PhpSpreadsheet允许您将电子表格写入PDF格式,以快速分发表示的数据。

PDF限制请注意,PDF文件格式在样式单元格,数字格式等方面有一些限制。

\ PhpOffice \ PhpSpreadsheet \ Writer \ Pdf

PhpSpreadsheet的PDF Writer是第三方PDF渲染库(如TCPDF,mPDF或Dompdf)的包装。现在,您必须自己安装PDF渲染库。但PhpSpreadsheet可以与许多不同的库一起使用。

当前,支持以下库:

在这里插入图片描述

不同的库具有不同的优点和缺点。有些生成比其他格式更好的格式输出,有些比其他格式更快或使用更少的内存,而有些生成较小的.pdf文件。他们希望根据自己的情况使用的是开发人员的选择。

您可以使用其特定名称实例化writer,如下所示:

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Mpdf');

或者,您可以使用更通用的名称注册正在使用的编写器,因此您不必记住选择的是哪个库,而只需要编写PDF文件即可:

$class = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf::class;
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', $class);
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Pdf');

或者,您可以像这样直接实例化您选择的作者:

$writer = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);

定制实施或配置

如果需要受支持的PDF库的自定义实现或自定义配置。您可以扩展PDF库和PDF编写器,如下所示:

class My_Custom_TCPDF extends TCPDF
{
    // ...
}

class My_Custom_TCPDF_Writer extends \PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf
{
    protected function createExternalWriterInstance($orientation, $unit, $paperSize)
    {
        $instance = new My_Custom_TCPDF($orientation, $unit, $paperSize);

        // more configuration of $instance

        return $instance;
    }
}

\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', MY_TCPDF_WRITER::class);

编写电子表格

一旦确定了要用于PDF生成的渲染器,就可以使用以下代码编写.pdf文件:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
$writer->save("05featuredemo.pdf");

请注意,\PhpOffice\PhpSpreadsheet\Writer\Pdf默认情况下仅输出第一个工作表。

编写所有工作表

PDF文件可以包含一个或多个工作表。如果要将所有工作表都写到一个PDF文件中,请使用以下代码:

$writer->writeAllSheets();

写一个特定的工作表

PDF文件可以包含一个或多个工作表。因此,您可以指定要写入PDF的工作表:

$writer->setSheetIndex(0);

公式预计算

默认情况下,该编写器会预先计算电子表格中的所有公式。在大型电子表格上,这可能会很慢,甚至可能是不必要的。但是,您可以禁用公式预计算:

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
$writer->setPreCalculateFormulas(false);

$writer->save("05featuredemo.pdf");

十进制和千位分隔符

请参阅“ \PhpOffice\PhpSpreadsheet\Writer\Csv如何控制它们的外观”部分。

从模板生成Excel文件(读取,修改,写入)

读写器是使您能够从模板生成Excel文件的工具。与从头开始生成Excel文件相比,这需要更少的编码工作,尤其是在您的模板具有许多样式,页面设置属性,标题等的情况下。

这是一个如何打开模板文件,填写几个字段并再次保存的示例:

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

$worksheet = $spreadsheet->getActiveSheet();

$worksheet->getCell('A1')->setValue('John');
$worksheet->getCell('A2')->setValue('Smith');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('write.xls');

请注意,可以加载一个xlsx文件并生成一个xls文件。

从HTML内容生成Excel文件

如果要从预渲染的HTML内容生成Excel文件,则可以使用HTML Reader自动进行。当您从将下载/发送给用户的Web应用程序内容生成Excel文件时,此功能非常有用。

例如:

$htmlString = '<table>
                  <tr>
                      <td>Hello World</td>
                  </tr>
                  <tr>
                      <td>Hello<br />World</td>
                  </tr>
                  <tr>
                      <td>Hello<br>World</td>
                  </tr>
              </table>';

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
$spreadsheet = $reader->loadFromString($htmlString);

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('write.xls'); 

假设您有多个要从html创建的工作表。这可以如下实现。

$firstHtmlString = '<table>
                  <tr>
                      <td>Hello World</td>
                  </tr>
              </table>';
$secondHtmlString = '<table>
                  <tr>
                      <td>Hello World</td>
                  </tr>
              </table>';

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
$spreadsheet = $reader->loadFromString($firstHtmlString);
$reader->setSheetIndex(1);
$spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet);

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('write.xls');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值