Javascript 将所选表格行导出到Excel

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.

我正在开发一个导出到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.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