将业务数据从UI5导出到Excel [英] Export business data from UI5 to Excel

查看:85
本文介绍了将业务数据从UI5导出到Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张包含产品详细信息的表,例如 ID 说明 price 等.我正在尝试将这些数据导出到Excel中

I have a table with product details like ID, description, price etc.. I am trying to export these data to an Excel.

如果我只是执行 getModel("A"),然后绑定嵌套的"A"的几个属性,则可以很好地下载excel.但是,如果我尝试访问任何其他结构,例如 getModel("A").getProperty("/Person/PersonFullName"),它将保留该列空白.

If I just do getModel("A"), and then bind few properties of "A", which are not nested, the excel is downloaded fine. But if there is any other structure, which I am trying to access for example, getModel("A").getProperty("/Person/PersonFullName"), it will leave that column blank.

{ // Controller
  onExport: function() {
    var aCols, aProducts, oSettings;
    aCols = this.createColumnConfig();
    aProducts = this.getView().getModel("A"); // A has nested/deep entities
    oSettings = {
      workbook: { columns: aCols },
      dataSource: aProducts
    };
    var oSpreadsheet = new Spreadsheet(oSettings); // required "sap/ui/export/Spreadsheet"
    oSpreadsheet.build();
  },            

  createColumnConfig: function() {
    return [
      {
        label: 'Product ID',
        property: 'name'
      },
      {
        label: 'Category',
        property: 'BillTo/BillToName', //Not able to get this property
      }
    ];
  },

}

推荐答案

根据

According to the API reference of sap/ui/export/Spreadsheet, the dataSource setting object awaits one of the following arguments:

  • 数据源属性的映射,//请参阅API参考以获取可用选项
  • OData服务的URL
  • JSON数组
  • Map of data source properties, // See API reference for available options
  • URL to an OData service
  • JSON array

但是在您的代码中,分配给 dataSource aProduct 是对"A" 模型的引用,是无效.

But in your code, the aProduct, which is assigned to the dataSource, is a reference to the "A" model which is invalid.

应根据模型类型设置 dataSource :

const odataListBinding = this.byId("myResponsiveTable").getBinding("items");
const serviceEntryPath = "/sap.app/dataSources/<sourceName>/uri"; // See manifest.json for <sourceName>
const serviceUrl = this.getOwnerComponent().getManifestEntry(serviceEntryPath);

{ // Constructor settings of sap/ui/export/Spreadsheet
  dataSource: {
    type: "OData",
    useBatch: true,
    serviceUrl: serviceUrl,
    headers: odataListBinding.getModel().getHeaders(),
    dataUrl: odataListBinding.getDownloadUrl(), // serviceUrl + "/Orders" + added queries ($expand, $select, ...)
    count: odataListBinding.getLength(),
    sizeLimit: /*e.g.*/1000,
  },
  worker: true, // false if working with mock server or if CSP is enabled.
  fileName: "myExportedDataFromODataV2.xlsx"
}

注意:请确保在 dataUrl 中包含相应的 $ expand 参数.否则,将不会导出嵌套属性.

Note: Please make sure that the corresponding $expand parameter is included in the dataUrl. Otherwise, nested properties won't be exported.

{ // Constructor settings of sap/ui/export/Spreadsheet
  dataSource: myJSONModel.getProperty("/SomeCollection"), // returns an array
  fileName: "myExportedDataFromPlainJSON.xlsx"
}

样品

  • 我的样本具有嵌套属性
  • 来自演示套件
  • 这篇关于将业务数据从UI5导出到Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆