前端代码 注:需引入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;