2022-03-13 保存表格

2022-03-13  本文已影响0人  一粟01

1 加载autoload.php

载入composer自动加载文件
使用命名空间里的类文件,(可以给类文件的命名空间起个别名)
实例化Spreadsheet类

<?php
    #1 载入文件
    #载入composer自动加载文件
    require 'vendor/autoload.php';
    /*
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    #实例化Spreadsheet类
    $shili1 = new Spreadsheet();
    */
    #使用命名空间里的类文件,并给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet as leim1;
    #实例化Spreadsheet类,用类的别名
    $shili1 = new leim1();
?>

2 单元格及单元格值的获取、设置

获取活动工作簿
获取单元格
设置单元格的值
获取单元格的值

<?php
    #2 单元格操作
    #获取活动工作簿 网站根目录下,要有“i1.xlsx”这个文件
    $gzbu1 = $shili1->getActiveSheet('i1.xlsx');    
    #获取单元格
    $dygeB2 = $gzbu1->getCell('B2');
    #设置单元格的值
    $valB2 = $dygeB2->setValue('东方朔');
    #获取单元格的值
    $valB21 = $dygeB2->getValue('B2');
    $valB23 = $gzbu1->getCell('B2')->getValue();
    //获取单元格,获取单元格坐标
    echo $valB23 = $gzbu1->getCellByColumnAndRow(3,2)->getCoordinate();
?>

3 保存表格

(使用xlsx类)
先是命名空间的类
使用命名空间里的类文件
类文件的实例化
保存文件

<?php
    #3 保存表格 #使用xlsx类
    #先是命名空间的类
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    #类文件的实例化
    $wenj1 = new Xlsx($shili1);
    #保存文件
    $wenj1->save('b1.xlsx');
?>

完整代码
<?php
    #1 载入文件
    #载入composer自动加载文件
    require 'vendor/autoload.php';
    /*
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    #实例化Spreadsheet类
    $shili1 = new Spreadsheet();
    */
    #使用命名空间里的类文件,并给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet as leim1;
    #实例化Spreadsheet类,用类的别名
    $shili1 = new leim1();

    #2 单元格操作
    #获取活动工作簿 网站根目录下,要有“i1.xlsx”这个文件
    $gzbu1 = $shili1->getActiveSheet('i1.xlsx');    
    #获取单元格
    $dygeB2 = $gzbu1->getCell('B2');
    #设置单元格的值
    $valB2 = $dygeB2->setValue('东方朔');
    #获取单元格的值
    $valB21 = $dygeB2->getValue('B2');
    $valB23 = $gzbu1->getCell('B2')->getValue();
    //获取单元格,获取单元格坐标
    echo $valB23 = $gzbu1->getCellByColumnAndRow(3,2)->getCoordinate();

    #3 保存表格 #使用xlsx类
    #先是命名空间的类
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    #类文件的实例化
    $wenj1 = new Xlsx($shili1);
    #保存文件
    $wenj1->save('b1.xlsx');
?>

实测,可以运行。
很多教程里,把变量名取成跟关键字一样,让初学者看着云里雾里,个人很不喜欢。所以,虽然我的笔记是从别人那里学来的,但是语句做了简单处理,能自由命名的地方,尽量用拼音+数字表示了。


4 修改代码

以上,是教程,拼起来的。
教程中要先提供一个

网站根目录下已有的文件(i1.xlsx)
(此处使用引用格式,只是强调一下)

这种做法,通用性不强。

能不能直接先创建一个文件,再设置单元格的值?当然,最后是要保存的。
可借鉴上面的教程,
第2步先保存文件,
第3步再读取这个文件,
第4步最后还是保存为这个文件。
于是,修改代码,并进行调试,最后实测可行。

另外,将spreadsheet安装到主站点根目录下,
在子站点中加载文件,require 'vendor/autoload.php';代码修改为
require $_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php';
其中$_SERVER['DOCUMENT_ROOT']是调用上层目录
所有代码如下:

<?php
    #1 载入文件
    #载入composer自动加载文件
    #require 'vendor/autoload.php';
    require $_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php';
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    #实例化Spreadsheet类
    $shili1 = new Spreadsheet();

    #2 保存表格 #使用xlsx类
    #先是命名空间的类
    #使用命名空间里的类文件
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    #类文件的实例化
    $wenj1 = new Xlsx($shili1);
    #保存文件 新建一个文件,命名为b1.xlsx。如果已有同名文件,则删除原文件中所有内容。
    $wenj1->save('b1.xlsx');

    #3 单元格操作
    #获取活动工作簿
    $gzbu1 = $shili1->getActiveSheet('b1.xlsx');    
    #获取单元格
    $dygeB2 = $gzbu1->getCell('c4');
    #设置单元格的值
    $valB2 = $dygeB2->setValue('东方朔20220313');
    
    #4 保存文件
    $wenj1->save('b1.xlsx');
?>
上一篇下一篇

猜你喜欢

热点阅读