Javascript 将所选表格行导出到Excel
我正在开发一个导出到Excel的功能,其中我只想导出表中选定的行。如何对所选行进行grep 我准备了一个例子:Javascript 将所选表格行导出到Excel,javascript,sapui5,Javascript,Sapui5,我正在开发一个导出到Excel的功能,其中我只想导出表中选定的行。如何对所选行进行grep 我准备了一个例子: 逻辑:将表中选定的行数据转换为JSON,然后将JSON导出到CSV文件 ExcelExport.view.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xml> <core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.
逻辑:将表中选定的行数据转换为JSON,然后将JSON导出到CSV文件 ExcelExport.view.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<core:View
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m"
controllerName=" com.sap.test.view.ExcelExport "
xmlns:html="http://www.w3.org/1999/xhtml">
<Page
title="Export Selected Table row to CSV">
<content>
<Table
id="sampleTable"
mode="MultiSelect"
inset="false"
items="{
path:'/'
}">
<headerToolbar>
<Toolbar>
<Button
text="Export Green to Excel"
icon="sap-icon://excel-attachment"
press="handleSelectedRowExcelExport" />
</Toolbar>
</headerToolbar>
<columns>
<Column
minScreenWidth="Tablet"
demandPopin="true">
<Text text="S1" />
</Column>
<Column
minScreenWidth="Tablet"
demandPopin="true">
<Text text="S2" />
</Column>
<Column
minScreenWidth="Tablet"
demandPopin="true">
<Text text="S3" />
</Column>
</columns>
<items>
<ColumnListItem
type="Active">
<cells>
<Text
text="{s1}" />
<Text
text="{s2}" />
<Text
text="{s3}" />
</cells>
</ColumnListItem>
</items>
</Table>
ExcelExport.controller.js
jQuery.sap.require("sap.ui.core.util.Export");
jQuery.sap.require("sap.ui.core.util.ExportTypeCSV");
sap.ui.controller("com.sap.test.view.ExcelExport", {
var oView; //declared global
var oModel;
onInit: function() {
oView = this.getView();
var demo =[
{ "s1": "1", "s2":"qwe", "s3":"1s21"},
{ "s1": "2", "s2":"rqewr", "s3":"12ee1"},
{ "s1": "3", "s2":"sdfsdf", "s3":"1xxa21"}
];
oModel = new sap.ui.model.json.JSONModel(demo);
oView2.setModel(oModel);
},
handleSelectedRowExcelExport: function(){
var oTable = oView.byId("sampleTable");
var contexts = oTable.getSelectedContexts();
var items = contexts.map(function(oEvent){
return oEvent.getObject();
});
/*In items you will get the entire row data of selected rows in table*/
this.JSONToCSVConvertor(items, "ExportGreen", true);
},
JSONToCSVConvertor: function(JSONData, ReportTitle, ShowLabel){
//If JSONData is not an object then JSON.parse will parse the JSON string in an Object
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
var CSV = '';
//This condition will generate the Label/Header
if (ShowLabel) {
var row = "";
//This loop will extract the label from 1st index of on array
for (var index in arrData[0]) {
//Now convert each value to string and comma-seprated
row += index + ',';
}
row = row.slice(0, -1);
//append Label row with line break
CSV += row + '\r\n';
}
//1st loop is to extract each row
for (var i = 0; i < arrData.length; i++) {
var row = "";
//2nd loop will extract each column and convert it in string comma-seprated
for (var index in arrData[i]) {
row += '"' + arrData[i][index] + '",';
}
row.slice(0, row.length - 1);
//add a line break after each row
CSV += row + '\r\n';
}
if (CSV == '') {
alert("Invalid data");
return;
}
//this trick will generate a temp "a" tag
var link = document.createElement("a");
link.id="lnkDwnldLnk";
//this part will append the anchor tag and remove it after automatic click
document.body.appendChild(link);
var csv = CSV;
blob = new Blob([csv], { type: 'text/csv' });
var csvUrl = window.webkitURL.createObjectURL(blob);
var filename = 'UserExport.csv';
$("#lnkDwnldLnk")
.attr({
'download': filename,
'href': csvUrl
});
$('#lnkDwnldLnk')[0].click();
document.body.removeChild(link);
}
}
jQuery.sap.require(“sap.ui.core.util.Export”);
jQuery.sap.require(“sap.ui.core.util.ExportTypeCSV”);
controller(“com.sap.test.view.ExcelExport”{
var oView;//声明为全局
var-oModel;
onInit:function(){
oView=this.getView();
var演示=[
{“s1”:“1”、“s2”:“qwe”、“s3”:“1s21”},
{“s1”:“2”,“s2”:“rqewr”,“s3”:“12ee1”},
{“s1”:“3”,“s2”:“sdfsdf”,“s3”:“1xxa21”}
];
oModel=newsap.ui.model.json.JSONModel(demo);
oView2.setModel(oModel);
},
HandleSelectedRowExceleExport:function(){
变量oTable=oView.byId(“可抽样”);
var contexts=oTable.getSelectedContexts();
var items=contexts.map(函数(oEvent){
返回oEvent.getObject();
});
/*在items中,您将获得表中选定行的整行数据*/
此.JSONToCSVConvertor(项目“ExportGreen”,true);
},
JSONToCSVConvertor:函数(JSONData、ReportTitle、ShowLabel){
//如果JSONData不是对象,那么JSON.parse将解析对象中的JSON字符串
var arrData=typeof JSONData!=“object”?JSON.parse(JSONData):JSONData;
var CSV=“”;
//此条件将生成标签/标题
如果(显示标签){
var行=”;
//此循环将从数组的第一个索引中提取标签
对于(arrData[0]中的var索引){
//现在将每个值转换为字符串和逗号分隔符
行+=索引+',';
}
row=row.slice(0,-1);
//用换行符追加标签行
CSV+=行+'\r\n';
}
//第一个循环是提取每一行
对于(变量i=0;i
希望这对你有帮助
如果您想了解JSON包含大量数据的示例,请参考以下链接-
您的问题非常令人困惑。您想导出所有选中的行还是选中复选框的行?选中复选框的位置如果我不想要多选选项怎么办?那么应该从代码中删除什么?您可以删除
模式=“从sap.m.表格属性中多选
。默认情况下,如果未明确指定,模式将为None