我有一个表,其中包含产品详细信息,例如 ID ,说明, price 等。我正在尝试将这些数据导出到Excel中
如果我只是做getModel("A")
,然后绑定“ 不”嵌套的“ A”的几个属性,则可以很好地下载excel。但是,如果我尝试访问其他任何结构,例如getModel("A").getProperty("/Person/PersonFullName")
,它将使该列空白。
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
}
];
},
答案 0 :(得分:1)
根据API参考,dataSource
设置将等待以下参数之一:
- 数据源属性的映射(如果是OData,请参见available properties)
- OData服务的URL
- JSON数组
但是在您的代码中,分配给aProduct
的{{1}}是对dataSource
模型的引用,而该模型无效。< / p>
"A"
应该是:
dataSource
const listBinding = this.byId("myResponsiveTable").getBinding("items"); // ODataListBinding
注意:请确保dataSource: {
type: "OData",
useBatch: true,
serviceUrl: listBinding.getModel().sServiceUrl, // same URL as defined in manifest.json>/sap.app/dataSources/<dataSource name>/uri
headers: listBinding.getModel().getHeaders(),
dataUrl: listBinding.getDownloadUrl(), // serviceUrl + "/Orders" + added queries ($expand, $select, ...)
count: listBinding.getLength(),
sizeLimit: /*e.g.*/1000,
},
worker: true // false if working with mock server or if CSP is enabled.
中包含相应的$expand
参数。否则,将不会导出嵌套属性。
dataUrl