我有一个关于将dojo数据网格导出到excel文件的问题。我已经使用dojo导出器和一些php代码使它与csv文件一起工作。但是,如何将其保存为excel文件。我现在谈论的是pear和其他一些库,但必须有与我用于csv的解决方案类似的解决方案。此外,当我在dojo中创建自己的导出器时,它是否需要比我用于csv导出器的代码更具体的东西。此外,我需要在php代码中更改什么才能将其保存为xls。代码如下。提前非常感谢。
我的道场出口商:
function exportCsv(){
var g = dijit.byId("grid");
g.exportGrid("csv",{
writerArgs: {
separator: ","
}
}, function(str){
var form = document.createElement('form');
dojo.attr(form, 'method', 'POST');
document.body.appendChild(form);
dojo.io.iframe.send({
url: "csv.php",
form: form,
method: "POST",
content: {exp: str},
timeout: 15000
});
document.body.removeChild(form);
});
}
我的php代码使用csv:
<?
$time = time();
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename="grid_$time.csv"");
$exportedData = $_POST['exp'];
echo stripslashes($exportedData);
exit;
?>
这里有一个很好的PHP工具,非常适合这个目的。
http://www.phpclasses.org/package/1919-PHP-Stream-wrapper-to-read-and-write-MS-Excel-files.html
设置非常简单,您可以将大部分设置为通过.csv文件作为下载附件。请尝试以下代码。
CSV到XLS的转换
第一个设置文件csv数据和类
require_once "excel.php";
define('_CSV_SEPARATOR_', ',');
// the excel class setsup xlsfile stream writer, point it to a tmp file
$export_file = "xlsfile://tmp/example.xls";
// the csv-contents must be put into an array,
// serialized and sent to the stream
$import_file = "/path/to/CSV_FILE.csv";
$import=explode("n", file_get_contents($import_file));
// column names should be first line
$header = array_shift($import);
确保一切看起来都很好
$header = explode(_CSV_SEPARATOR_, $header);
for($i = 0; $i < count($header); $i++)
$header[$i] = trim($header[$i]);
csv数据剩余内容中的循环行
// rest of text is data, split em up and list them with array indices,
// and associative names as key in the rowdata
$assocData = array();
foreach($import as $line) {
$row = explode(_CSV_SEPARATOR_, $line);
$rowData = array();
$unknowncount = 0;
for($i = 0; $i < count($row); $i++) {
if(!empty($header[$i])) $column = $header[$i];
else $column = 'UNK'.$unknowncount++;
$rowData[$column] = trim($row[$i]);
}
$assocData[]=$rowData;
}
现在,我们将数据写入导出tmp文件,转换完成
$fp = fopen($export_file, "wb");
if (!is_resource($fp))
{
die("Cannot open $export_file");
}
fwrite($fp, serialize($assocData));
fclose($fp);
通过将输出的tmp文件放入客户端
$export_file = "xlsfile://tmp/example.xls";
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename="" . basename($export_file) . """ );
header ("Content-Description: PHP/INTERBASE Generated Data" );
readfile($export_file);
exit;
祝你好运并享受:D