将模型导出到csv

时间:2018-09-07 12:18:53

标签: javascript csv sapui5

我正在尝试导出由员工,一些属性和日期组成的模型。

模型的可视化

var myModel= {
  employees: [{
    pentagram: oMyData.Pentagram,
    records: [{
      Date: oMyData.Date,
      GC: oMyData.Lunch,
      CheckIn: oMyData.CheckedIn,
      CheckOut: oMyData.CheckedOut
    }]
  }]
}; 

我的应用目的

我的应用程序通过让他们在前门签入和签出来记录哪个员工在建筑物中。这已注册到HanaXS数据库。每天员工签入时,都会创建带有相应属性的记录。因此,如果决定不去办公室吃饭,他们将单击GC按钮(在荷兰语中代表“不消费”)。

因此,简而言之。每个雇员在数据库中每个日期都有自己的记录。

我想做什么

我想制作一个可以覆盖一个月的Excel工作表。 最左边的列将覆盖员工的姓名(五角星)。之后,所有列将按时间顺序在对应月份中的一天。

按下GC按钮时,内容应为X。否则,该单元格应该为空。

我的问题

我不知道如何在与员工保持联系的同时获取日期作为列。我已经在导出模型和表格方面进行了很多搜索,但实际上没有什么可以满足我的需求。

如果有人在此之前有经验或做过此事,我将不胜感激,寻求帮助。

预先感谢

1 个答案:

答案 0 :(得分:1)

您好,您可以使用以下库

'sap/ui/core/util/Export',
'sap/ui/core/util/ExportTypeCSV',

这是您可以参考以适合您的示例代码

generateExcel: function(oData, that) {
            var oModel = new JSONModel();
            oModel.setData(oData); //oData is the model data which is binding to the table

            var oTable = this.getViewById("yourTableName").getTable();
            var aColumns = oTable.getColumns();
            var aItems = oTable.getItems();
            var aTemplate = [];
            for (var i = 0; i < aColumns.length; i++) {

                    var oColumn = {
                        name: aColumns[i].getHeader().getText(),
                        template: {
                            content: {
                                path: null
                            }
                        }
                    };
                    if (aItems.length > 0) {
                        oColumn.template.content.path = aItems[0].getCells()[i].getBinding("text").getPath();
                    }
                    aTemplate.push(oColumn);

            }

            var oExport = new Export({
                // Type that will be used to generate the content. Own ExportType’s can be created to support other formats
                exportType: new ExportTypeCSV({
                    separatorChar: ",",
                    charset: "utf-8"
                }),
                // Pass in the model created above
                models: oModel,
                // binding information for the rows aggregation
                rows: {
                    path: "/results"
                },
                // column definitions with column name and binding info for the content
                columns: aTemplate
            });
            oExport.saveFile().always(function() {
                this.destroy();
            });
        }

嗨,您可以根据列类型使用自定义格式化程序,例如下面的示例

var oColumn = {
                        name: aColumns[i].getHeader().getText(),
                        template: {
                            content: {
                                path: null,
                                formatter: function(value) {
                                    if (value instanceof(Date)) {
                                        //Convert to user date format
                                        var oFormat = DateFormat.getDateInstance({
                                            style: "short"
                                        });
                                        value = oFormat.format(value);

                                    } else {

                                        value = (value === null) ? "" : value;

                                    }
                                    return value;
                                }
                            }
                        }
                    };