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;
相关推荐
Data-Miner2 小时前
怎么用AI给Excel去重?先核对这7条再下手,别让好数据被删错:数以轻舟方案解析
人工智能·excel
Data-Miner4 小时前
做表格数据分析的AI工具怎么选?先对一下这三个真实需求,再看哪些真能落地
人工智能·数据分析·excel
尤鸟倦6 天前
OneNote table复制到Excel遇到的各种问题
excel
2501_930707787 天前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
leihefeng7 天前
PX04-用 Python 读 Excel 画折线图,还能直接插回 Excel 文件
python·excel
yanlaifan7 天前
Excel中指定单元格不能输入内容的方法
excel
babe小鑫8 天前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
Data-Miner8 天前
商品ABC分类分析怎么用AI做?脚本复用+图表可编辑的一次完整实操
人工智能·数据分析·excel
E-iceblue11 天前
Excel 列转行/行列转换全指南:从 4 种常见解法到 Python 批量自动化
python·excel·python库·spire.xls
Data-Miner11 天前
AI处理数据的脚本复用与逻辑复用有什么区别?哪种方式更能沉淀工作成果
数据分析·excel