gpt4 book ai didi

php - 通过 AJAX 将数据从 PHP 类传递到 PHPExcel

转载 作者:可可西里 更新时间:2023-11-01 13:12:31 25 4
gpt4 key购买 nike

我被 OOP PHP 和 json 数据困住了。我对 OOP 并不陌生,但我无法理解这个问题。如果有人可以向我解释,那就太好了!

我在 PHP 中有以下网格对象:

    Class Grid {

var $data;
var $joins;
var $fields;
var $where;
var $table;
var $groupBy;
var $having;
var $limit;
var $order_by;
var $sort;
var $security;
var $set;
var $sql;

....

// loads data into the grid
function load() {
...
// setup the sql - bring it all together
$sql = "
SELECT $post[cols]
FROM `$table`
$joins
$where
$groupBy
$having
ORDER BY $order_by $sort
$limit
";

$this->sql = $sql;

// execute the sql, get back a multi dimensial array
$rows = $this->_queryMulti($sql);

// form an array of the data to send back
$data = array();
$data['rows'] = array();
foreach($rows as $i=>$row) {
foreach($row as $col=>$cell) {
// use primary key if possible, other wise use index
$key = $primaryKey ? $row[$primaryKey] : $i;
// primary key has an _ infront becuase of google chrome re ordering JSON objects
//http://code.google.com/p/v8/issues/detail?id=164
$data['rows']["_".$key][$col] = $cell;
}
}

...
$data['order_by'] = $order_by;
$data['sort'] = $sort;
$data['page'] = $page;
$data['start'] = $startRow + 1;
$data['end'] = $startRow + $nRowsShowing;
$data['colData'] = $colData;

$this->data = $data;
}

它由 AJAX callgrid.php 调用:

$grid->load();
// here we need to add field in data[sql] = sql query, then we can pass it to toExcel() - how?
echo json_encode($grid->data);

我想要得到的是能够使用 PHPExcel 将当前的 sql 查询(它可以是全部或搜索结果)导出到 Excel 中。所以我得到了带有函数 toexcel($query) 的 toExcel.php - 它将进行查询并将其导出到 excel。

现在 - 如何通过 AJAX 将 sql 查询从网格传递到 toexcel?

  1. 我知道我需要添加到 $data():

    $data['sql'] = $sql;

下一步是什么?


更新:我正在使用以下 jquery 网格: http://square-bracket.com/openjs

我明白 PHPExcel 应该由 grid 或 jquery 启动

最佳答案

您可以做什么的总体思路:

创建一个按钮,例如

<a href="#" id="export">export to Excel</a>

然后在 jquery 中你必须创建类似这样的东西:

var grid = $(".grid.digital_edit").loadGrid({...}); //or similar - what you did to load the data into the grid

$('#export').click(function() {
$.ajax({
url: "export_to_excel.php", // the url of the php file that will generate the excel file
data: grid.getData(), //or similar - based on the grid's API
success: function(response){
window.location.href = response.url;
}
})

});

文件 export_to_excel.php 将包含生成 excel 文件的代码:

  1. 您将在此处启动 PHPExcel 类并创建一个文件,例如new_excel.xls
  2. 在您的响应数组中,$response['url'] 将包含新创建文件的绝对 URL。 (http://www.example.com/files/new_excel.xls)

这听起来可能过于复杂,但请尝试将您的目标分开并一次实现一个。例如

  1. 创建按钮。
  2. 然后尝试在点击按钮时进行简单的 AJAX 调用。
  3. 然后创建 export_to_excel.php 文件并尝试使用 PHPExcel 类。
  4. 根据找到的教程创建示例 excel 文件。
  5. 根据您自己的数据创建一个 excel 文件,但硬编码在 php 文件中。
  6. 创建正确的 AJAX 调用,将所需数据发送到 php 文件。
  7. 捕获正确的 AJAX 调用。
  8. 将来自 AJAX 调用的数据传递给 PHPExcel 类。
  9. 创建 excel 文件。
  10. 将 url 发回 excel 文件。
  11. 将用户重定向到 excel 文件的 url。

编辑

为您提供更多帮助:您只需要一个 PHP 脚本/文件。同一个将从 javascript 文件接收 AJAX 调用,将生成 excel 文件并将文件 url 返回/响应到 javascript 文件(按此顺序)。一个简化的例子是:

<?php
//export_to_excel.php

$data = $_POST['data']; // get the data from the AJAX call - it's the "data: grid.getData()" line from above

//... format the received data properly for the PHPExcel class

// later on in the same file:
$xls = new PHPExcel();
$xls->loadData($formattedData); //I assume that there is a similar loadData() method
$xls->exportToFile('/vaw/www/example.com/public/files/new_excel.xls'); // I assume that there is an exportToFile() method

$response = array(
'success' => true,
'url' => 'http://www.example.com/files/new_excel.xls'
);

header('Content-type: application/json');

// and in the end you respond back to javascript the file location
echo json_encode($response);

然后在 javascript 中用这一行显示文件

window.location.href = response.url; //response.url is $response['url'] from the PHP script

关于php - 通过 AJAX 将数据从 PHP 类传递到 PHPExcel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com