我希望得到一个Javascript函数,它将导出我的datagrid(零。grid。DataGrid)的数据到一个CSV文件或类似的东西,可以打开一个电子表格应用程序充满数据。有没有什么标准的方法来做这件事。
dfty9e191#
这就是使用PHP服务器端脚本完成该操作的方法。
grid.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: "CSVexport.php", form: form, method: "POST", content: {exp: str}, timeout: 15000 }); document.body.removeChild(form); } );
CSVexport.php:
<? $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 $exportedData; ?>
jdgnovmf2#
我在EnhancedGrid中使用导出器插件时遇到了坚韧,最后我使用iFrame使它工作起来:
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"> <title>CISROMM - Master Milestone List Editor</title> <!-- Include dojo dependencies --> <link rel="stylesheet" href="js/dojoroot/dojo/resources/dojo.css"> <link rel="stylesheet" href="js/dojoroot/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="js/dojoroot/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css"> <link rel="stylesheet" href="js/dojoroot/dojox/grid/enhanced/resources/EnhancedGrid.css"> <link rel="stylesheet" href="js/dojoroot/dojox/grid/resources/claroGrid.css"> <script src="js/dojoroot/dojo/dojo.js" data-dojo-config="isDebug: true,parseOnLoad: true"> </script> <!-- Include dojo dependencies --> <!-- Require the widgets --> <script> dojo.require("dojox.grid.EnhancedGrid"); dojo.require("dojo.data.ItemFileWriteStore"); dojo.require("dojox.grid.enhanced.plugins.exporter.CSVWriter"); dojo.require("dojo.io.iframe"); <!-- Require the widgets --> <!-- Data Export Handler --> function exportAll(){ dijit.byId("grid").exportGrid("csv", function(str){ dojo.io.iframe.create('exportFrame', 'exportFrameLoaded()', ''); dojo.io.iframe._currentDfd = null; dojo.io.iframe.send({ url: "/ExportGrid.json", content:{data:str} }); }); }; <!-- Data Export Handler --> var grid, store; <!-- Grid Creation --> dojo.ready(function(){ store = new dojo.data.ItemFileWriteStore({ url: 'PopulateMsListEditor.json', urlPreventCache: 'yes', clearOnClose: 'yes' }); grid = new dojox.grid.EnhancedGrid({ store: store, rowSelector: 'auto', query: {id: "*"} , plugins: { exporter: true }, structure: [ {field: 'msConstId', width: '20%', name: 'Milestone',hidden: true}, {field: 'name', width: '20%', name: 'Milestone',editable: true} ] },"grid"); grid.startup(); }); </script> </head> <body class="claro"> <button id="exportBtn" data-dojo-type="dijit.form.Button" data-dojo-props=" iconClass:'dijitIconFile', showLabel:true, onClick:function() { exportAll(); }"> Export to Excel </button> <div id="grid" style="width: 560px;height: 680px;"></div> </body> </html>
我已经写了一篇博客文章,这样我就不必再搜索了。Export Data from Grid in DojoPS:建议仅将iFrame用于内部/内部Web应用程序。
a6b3iqyw3#
我也在寻找同样的问题,但我找到了答案...您必须使用dojox的导出器插件。Enhancedgrid“导出器插件提供将网格数据导出为给定格式的功能”。http://docs.dojocampus.org/dojox/grid/EnhancedGrid/plugins/Exporter问候
y53ybaqx4#
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"> <title>CISROMM - Master Milestone List Editor</title> <!-- Include dojo dependencies --> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/resources/dojo.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/tundra/tundra.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/document.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojox/grid/enhanced/resources/claro/EnhancedGrid.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css"> <script src='http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js'></script> <!-- Include dojo dependencies --> <!-- Require the widgets --> <script> dojo.require("dojox.grid.EnhancedGrid"); dojo.require("dojo.data.ItemFileWriteStore"); dojo.require("dojox.grid.enhanced.plugins.exporter.CSVWriter"); dojo.require("dojo.io.iframe"); <!-- Require the widgets --> <!-- Data Export Handler --> function exportAll(){ dijit.byId("grid").exportGrid("csv", function(str){ /*dojo.io.iframe.create('exportFrame', 'exportFrameLoaded()', ''); dojo.io.iframe._currentDfd = null; dojo.io.iframe.send({ url: "/ExportGrid.json", content:{data:str} });*/ //alert(str); document.getElementById("output").value=str; }); }; <!-- Data Export Handler --> var grid, store; <!-- Grid Creation --> dojo.ready(function(){ data = { identifier: 'id', label: 'id', items: [] }; data_list = [ { col1: "normal", col2: false, col3: "new", col4: 'But are not followed by two hexadecimal', col5: 29.91, col6: 10, col7: false }, { col1: "important", col2: false, col3: "new", col4: 'Because a % sign always indicates', col5: 9.33, col6: -5, col7: false }, { col1: "important", col2: false, col3: "read", col4: 'Signs can be selectively', col5: 19.34, col6: 0, col7: true }, { col1: "note", col2: false, col3: "read", col4: 'However the reserved characters', col5: 15.63, col6: 0, col7: true }, { col1: "normal", col2: false, col3: "replied", col4: 'It is therefore necessary', col5: 24.22, col6: 5.50, col7: true }, { col1: "important", col2: false, col3: "replied", col4: 'To problems of corruption by', col5: 9.12, col6: -3, col7: true }, { col1: "note", col2: false, col3: "replied", col4: 'Which would simply be awkward in', col5: 12.15, col6: -4, col7: false } ]; var rows = 100; for(var i=0, l=data_list.length; i<rows; i++){ data.items.push(dojo.mixin({ id: i }, data_list[i%l])); } // global var "test_store" store = new dojo.data.ItemFileWriteStore({data: data}); grid = new dojox.grid.EnhancedGrid({ store: store, rowSelector: 'auto', query: {id: "*"} , plugins: { exporter: true }, structure: [ {field: 'col1', width: '20%', name: 'col1',hidden: false}, {field: 'col2', width: '20%', name: 'col2',hidden: false}, {field: 'col3', width: '20%', name: 'col3',hidden: false}, {field: 'col4', width: '20%', name: 'col4',editable: true} ] },"grid"); grid.startup(); }); </script> </head> <body class="claro"> <button id="exportBtn" onClick="exportAll();"> Export to Excel </button> <div id="grid" style="width: 560px;height: 680px;"></div> <textarea id="output" style="width: 560px;height: 680px;"/> </body> </html>
4条答案
按热度按时间dfty9e191#
这就是使用PHP服务器端脚本完成该操作的方法。
CSVexport.php:
jdgnovmf2#
我在EnhancedGrid中使用导出器插件时遇到了坚韧,最后我使用iFrame使它工作起来:
我已经写了一篇博客文章,这样我就不必再搜索了。
Export Data from Grid in Dojo
PS:建议仅将iFrame用于内部/内部Web应用程序。
a6b3iqyw3#
我也在寻找同样的问题,但我找到了答案...
您必须使用dojox的导出器插件。Enhancedgrid
“导出器插件提供将网格数据导出为给定格式的功能”。
http://docs.dojocampus.org/dojox/grid/EnhancedGrid/plugins/Exporter
问候
y53ybaqx4#