Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAPUI5/Fiori导出到excel-ExportTypeCSV,在单个报价前格式化数据_Sapui5_Sap Fiori - Fatal编程技术网

SAPUI5/Fiori导出到excel-ExportTypeCSV,在单个报价前格式化数据

SAPUI5/Fiori导出到excel-ExportTypeCSV,在单个报价前格式化数据,sapui5,sap-fiori,Sapui5,Sap Fiori,我可以动态地将表格数据导出到excel,但一些数据(如长数字和负值)是格式化的 下面是UI表数据 [在此处输入图像描述][1] 将数据导出到CSV [在此处输入图像描述][2] 当我选择长值时,它会在excel顶部显示正确的值,并且-ve值会附加“ 代码: jQuery.sap.require("sap.ui.core.util.Export"); jQuery.sap.require("sap.ui.core.util.ExportTypeCSV"); sap.ui.define([ 'jqu

我可以动态地将表格数据导出到excel,但一些数据(如长数字和负值)是格式化的

下面是UI表数据 [在此处输入图像描述][1]

将数据导出到CSV [在此处输入图像描述][2]

当我选择长值时,它会在excel顶部显示正确的值,并且-ve值会附加“

代码:

jQuery.sap.require("sap.ui.core.util.Export");
jQuery.sap.require("sap.ui.core.util.ExportTypeCSV");
sap.ui.define([
'jquery.sap.global',
'sap/ui/core/mvc/Controller',
'sap/ui/model/json/JSONModel'
], function(jQuery, Controller, JSONModel) {
"use strict";
var vSrcMATNR;
var oEvtBus = sap.ui.getCore().getEventBus();
var TableController = Controller.extend("UtilLoad.Util", {
exportToExcel: function(oTable) {
var that = this;
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 sap.ui.core.util.Export({
// Type that will be used to generate the content. Own ExportType’s can be created to support other formats
exportType: new sap.ui.core.util.ExportTypeCSV({
separatorChar : ",",
                charset : "utf-8"
}),
// Pass in the model created above
models: oTable.getModel(),
// binding information for the rows aggregation
rows: {
path: "/"
},
// column definitions with column name and binding info for the content
columns: aTemplate
});
oExport.saveFile().always(function() {
this.destroy();
});
},
fnDate: function(sDate) {
if (sDate) {
var oDateFormat = sap.ui.core.format.DateFormat.getDateTimeInstance({
pattern: "dd-MM-yyyy"
});
return oDateFormat.format(new Date(sDate));
} else {
return sDate;
}
}
});
return TableController;
});
jQuery.sap.require(“sap.ui.core.util.Export”);
jQuery.sap.require(“sap.ui.core.util.ExportTypeCSV”);
sap.ui.define([
“jquery.sap.global”,
“sap/ui/core/mvc/Controller”,
'sap/ui/model/json/JSONModel'
],函数(jQuery、控制器、JSONModel){
“严格使用”;
var-vSrcMATNR;
var oEvtBus=sap.ui.getCore().getEventBus();
var TableController=Controller.extend(“UtilLoad.Util”{
exportToExcel:函数(可旋转){
var=这个;
var aColumns=oTable.getColumns();
var aItems=oTable.getItems();
var-aTemplate=[];
对于(变量i=0;i0){
oColumn.template.content.path=aItems[0]。getCells()[i]。getBinding(“文本”).getPath();
}
A模板推送(O柱);
}
var oExport=new sap.ui.core.util.Export({
//将用于生成内容的类型。可以创建自己的ExportType以支持其他格式
exportType:new sap.ui.core.util.ExportTypeCSV({
分离器字符:“,”,
字符集:“utf-8”
}),
//传入上面创建的模型
模型:oTable.getModel(),
//行聚合的绑定信息
行:{
路径:“/”
},
//包含内容的列名和绑定信息的列定义
列:aTemplate
});
oExport.saveFile().always(函数()){
这个。销毁();
});
},
fnDate:功能(sDate){
如果(sDate){
var oDateFormat=sap.ui.core.format.DateFormat.getDateTimeInstance({
模式:“dd-MM-yyyy”
});
返回oDateFormat.format(新日期(sDate));
}否则{
返回sDate;
}
}
});
返回台控制器;
});
从SAP文档到使用数据导出功能,请了解它是什么以及如何使用

谢谢
拉杰什

请查看下面的屏幕截图

请在return语句的双引号之间留出制表符空间,将该数字转换为字符串

            {
                name: "Stock",
                template: {
                    content: {
                        parts: ["StockPosition"],
                        formatter: function(value) {

                            return "    " + value;
                        }
                    }
                }
            }

关于以科学符号(如2.85E+12)格式化值的问题:

在JavaScript中处理精确的大数字通常不是一个好主意,因为JavaScript使用IEEE 754标准中定义的双精度浮点数。它们很快就会失去精度

试试看

console.log(9999999999999999);
结果将是

10000000000000000
如果您想避免JavaScript中的科学符号,那么必须通过连接每个数字来编写自己的toString函数

function convertToString(fNumber){
 var sResult='';
 do{
   var iDigit = fNumber%10;
   fNumber=Math.trunc(fNumber/10);
   sResult = iDigit+sResult;
 }while(fNumber>0)   
 return sResult;
}
但你的主要问题是Excel

如果您的csv文件如下所示

Customer;Product;EAN;Price
SAP;Hana;1234567890123;1000
SAP;R/3;1234567890124;-1000
SAP;OpenUI5;1234567890126;9999999999999999
Excel将再次显示包含科学符号的表格

Customer   Product   EAN       Price
SAP        Hana     1,23E+12     1000
SAP        R/3      1,23E+12    -1000
SAP        OpenUI5  1,23E+12   1E+16
vH

是的,主要问题是将数据转换为excel时。通过添加制表符(\x09),我可以避免在excel中使用科学符号

不确定是不是最好的解决方案

谢谢
Rajesh

请您更详细地解释您的问题,以便我们能够确保理解您的问题?在生成的excel中,负值前面有一个引号,它可以工作,您能帮助我们如何避免以2.85E+12等形式显示长值,请在下面的快照中找到是,在我的逻辑中,除了日期值之外,所有其他字段我都是出于好奇而应用此Formatter的,如何实现下面的excel步骤->右键单击(列)->格式化单元格->分数(来自Catagories)