YiI2+ecshop phpexcel生成下载excel订单

前端代码 注:需引入jquery

html 复制代码
<button id="downloadBtn" class="download-btn">下载订单</button>
                        <script>
                            document.getElementById('downloadBtn').addEventListener('click', function(event) {
                                event.preventDefault();
                                // 自定义逻辑 例如:发送AJAX请求或显示下载提示
                                const key_words = $('input[name="key_words"]').val();
                                const end_time = $('input[name="end_time"]').val();
                                const begin_time = $('input[name="begin_time"]').val();

                                // 获取可能需要传递的参数
                                const params = {
                                    key_words: key_words,  // 示例参数
                                    end_time: end_time,
                                    begin_time: begin_time,
                                    is_down: 1
                                };

                                // 构建查询字符串
                                const queryString = $.param(params);
                                console.log(queryString)
                                // 使用AJAX发送GET请求
                                $.ajax({
                                    url: '',  // 替换为你的下载API地址
                                    type: 'GET',
                                    data: params,
                                    xhrFields: {
                                        responseType: 'blob'  // 重要:告诉jQuery我们期望接收二进制数据
                                    },
                                    success: function(data, status, xhr) {
                                        console.log(data)
                                        // 从响应头获取文件名
                                        const filename = xhr.getResponseHeader('Content-Disposition')
                                            ? xhr.getResponseHeader('Content-Disposition').split('filename=')[1]
                                            : 'download_' + new Date().getTime() + '.file';

                                        // 创建Blob对象
                                        const blob = new Blob([data]);

                                        // 创建下载链接
                                        const link = document.createElement('a');
                                        link.href = window.URL.createObjectURL(blob);
                                        link.download = decodeURIComponent(filename);

                                        // 触发下载
                                        document.body.appendChild(link);
                                        link.click();

                                        // 清理
                                        setTimeout(function() {
                                            document.body.removeChild(link);
                                            window.URL.revokeObjectURL(link.href);
                                        }, 100);
                                        return false;
                                    },
                                    error: function(xhr, status, error) {
                                        alert('下载失败: ' + (xhr.responseJSON && xhr.responseJSON.message || error));
                                    },
                                    complete: function() {
                                    }
                                });
                            });
                        </script>

后端:中间的内容生成部分已省略

php 复制代码
            ob_clean();
            ob_start();
            $PHPExcel = new PHPExcel();

            $PHPExcel->setActiveSheetIndex(0);
            $sheet = $PHPExcel->getActiveSheet();
            //设置表头/内容
            $sheet->setCellValue('A1', '订单编号');
            //设置行宽
            $PHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
            //设置行高
            $sheet->getRowDimension(($key+2))->setRowHeight(45);
            //设置换行  将PHP_EOL转成换行
            $sheet->getStyle('C'.($key+2))->getAlignment()->setWrapText(true);

            $Writer = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');


            $Writer->save('php://output');


            $excelContent = ob_get_clean();

            $timestamp = date('Ymd_His'); // 格式:年月日_时分秒
            $filename =  "系统订单_".$timestamp.".xlsx";
            $filename = str_replace('+', '%20', urlencode($filename));

            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment; filename='.$filename);
            header('Content-Length: ' . strlen($excelContent));
            echo $excelContent;
            exit;
相关推荐
smileNicky2 小时前
Java实现Excel图片URL筛选与大小检测
java·开发语言·excel
鲁Q同志6 小时前
若依导出模板时设置动态excel下拉框(表连接的)
java·excel
弓.长.7 小时前
从Excel到知识图谱再到数据分析:数据驱动智能体构建指南
数据分析·excel·知识图谱
写写闲篇儿10 小时前
将多个Excel合并到一个Excel中的方法
excel
葡萄城技术团队11 小时前
这几个 Excel 提升办公效率方法,你知道吗?
excel
流浪猪头拯救地球12 小时前
WPS 和 office (word/excel/ppt) 找到模板所在位置以及更改模板的方式(公文写作格式要求、字体安装、模板下载)
word·excel·wps
CPU不够了14 小时前
使用NPOI库导出多个Excel并压缩zip包
excel
KellenKellenHao14 小时前
Rsync实操
excel
2501_9205525614 小时前
Mac电脑 Office 2024 LTSC 长期支持版(Excel、Word、PPT)
macos·word·powerpoint·excel·mac