文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHPSpreadsheet导出Excel超过26列怎么办

2023-06-26 05:49

关注

小编给大家分享一下PHPSpreadsheet导出Excel超过26列怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

excel 行列表示方式

知道这个之后,只要根据 $i/26 的整数部分和模部分计算出列的表示字母就可以了。

下面是解决方法

<?phpnamespace AppLibrariesExcel;use PhpOfficePhpSpreadsheetCellDataType;use PhpOfficePhpSpreadsheetSpreadsheet;use PhpOfficePhpSpreadsheetWriterXlsx;class Export{    protected $data_type;    protected $spread_sheet;    protected $x_lsx;    public function __construct(DataType$data_type, Spreadsheet$spread_sheet, Xlsx$x_lsx)    {        $this->data_type= $data_type;        $this->spread_sheet= $spread_sheet;        $this->x_lsx= $x_lsx;    }        public function export($field_name,$data,$field_column,$file_name,$field_numeric_keys= [])    {        @ob_clean();        if (empty($field_name)|| empty($field_column)|| empty($data)|| empty($file_name))return false;        $sheet= $this->spread_sheet->getActiveSheet();        //设置header        $i= 0;        foreach ($field_name as $value) {            $cellName= self::stringFromColumnIndex($i). "1";            $sheet->setCellValue($cellName, $value)->calculateColumnWidths();            $sheet->getColumnDimension(self::stringFromColumnIndex($i))->setWidth(15);            $i++;        }        //设置value        $len= count($field_column);        foreach ($data as $key=> $item) {            $row= 2 + ($key* 1);            for ($i= 0; $i< $len; $i++) {                $sheet->setCellValueExplicit(self::stringFromColumnIndex($i). $row, $item[$field_column[$i]]??"", DataType::TYPE_STRING);                if (isset($item[$field_column[$i]])&& !empty($field_numeric_keys)&& in_array($field_column[$i],$field_numeric_keys)) {                $sheet->setCellValueExplicit(self::stringFromColumnIndex($i). $row, $item[$field_column[$i]]??"", DataType::TYPE_NUMERIC);                }            }        }        $writer= new Xlsx($this->spread_sheet);        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出07Excel文件        header('Content-Disposition: attachment;filename="' . $file_name . '.xlsx"');//告诉浏览器输出浏览器名称        header('Cache-Control: max-age=0');        $writer->save('php://output');        @ob_flush();        @flush();        exit;    }        public static function stringFromColumnIndex($pColumnIndex = 0)    {        static $_indexCache= array();        if (!isset($_indexCache[$pColumnIndex])) {            if ($pColumnIndex < 26) {                $_indexCache[$pColumnIndex]= chr(65 + $pColumnIndex);            }elseif ($pColumnIndex < 702) {                $_indexCache[$pColumnIndex]= chr(64 + ($pColumnIndex / 26)). chr(65 + $pColumnIndex % 26);            }else {                $_indexCache[$pColumnIndex]= chr(64 + (($pColumnIndex - 26)/ 676)). chr(65 + ((($pColumnIndex - 26)% 676)/ 26)). chr(65 + $pColumnIndex % 26);            }        }        return $_indexCache[$pColumnIndex];    }}

看完了这篇文章,相信你对“PHPSpreadsheet导出Excel超过26列怎么办”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯