Dojo数据网格到Excel文件



我有一个关于将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

相关内容

  • 没有找到相关文章

最新更新