abap2xlsx set_cell方法无法将值设置为2个小数位

2020-08-20 02:16发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我可以知道如何在abap2xlsx类中使用set_cell方法以确保我的值在excel工作表中位于2个小数位吗? 谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我可以知道如何在abap2xlsx类中使用set_cell方法以确保我的值在excel工作表中位于2个小数位吗? 谢谢。

付费偷看设置
发送
7条回答
小灯塔
1楼 · 2020-08-20 03:15.采纳回答

默认情况下,如果输入数字245,它将显示为" 245"。

使用此完整代码(假设您知道如何添加零件以生成文件),它将出现 例如" 245,00"或" 245.00",具体取决于您的区域设置:

 DATA(lo_excel)= NEW zcl_excel()。
 DATA(lo_worksheet)= lo_excel-> get_active_worksheet()。
 DATA(lo_style)= lo_excel-> add_new_style()。
 lo_style-> number_format-> format_code = zcl_excel_style_number_format => c_format_number_00。
 lo_worksheet-> set_cell(ip_column = 1 ip_row = 1 ip_style = lo_style-> get_guid()ip_value = 245)。
 DATA(lo_writer)= CAST zif_excel_writer(NEW zcl_excel_writer_2007())。
 DATA(xstring)= lo_writer-> write_file(lo_excel)。
Nir深蓝
2楼-- · 2020-08-20 02:59

默认数字格式为" 0.00"?

 DATA(lo_style)= lo_excel->  add_new_style()。
 lo_style_date->数字格式->格式代码= zcl_excel_style_number_format => c_format_number_00。

 lo_worksheet-> set_cell(... ip_style = lo_style-> get_guid()...)
野沐沐
3楼-- · 2020-08-20 03:00

Hi

在传递值之前,请按以下方式使用

< pre> data:lv_var(13)输入p十进制2。 lv_var1 =您的价值。 然后将此lv_var1传递给abap2xlsx

使用国家/地区设置将默认设置为2个小数位

使用SET COUNTRY选项

Venkat

当学会了学习
4楼-- · 2020-08-20 02:58

嗨,桑德拉·罗西,

您的代码在这里无效。 语法错误。

有没有人真的可以使用set_cell方法将打包数字默认为2个小数位?

打个大熊猫
5楼-- · 2020-08-20 02:52

当然有语法错误,我没有提供 完整的代码,我只是解释了使用样式的概念(set_cell(... ip_style = ...))

我的问题是:您是否要使用Excel数字格式" 0.00"? (转到Excel>"首页">"数字">格式列表>"自定义"> 0.00;它也等效于带有2个小数的格式编号)

哎,真难
6楼-- · 2020-08-20 02:54

感谢Sandra Rossi,

我将您的代码修改为如下所示,并且有效!:

FORM fsetcell
使用ip_col类型i
ip_row类型zexcel_cell_row
ip_value类型any。
xl-colalpha = zcl_excel_common => convert_column2alpha(ip_col)。
数据:开始于l,< br>第TYPE i行,
l的结尾。


*获取数据类型

DATA:
* my_type TYPE p,
* my_data TYPE my_type,

descr_ref类型参考cl_abap_typedescr。

数据:lo_style_dec2类型参考zcl_excel_style。
数据lo_style类型参考zcl_excel。
数据lv_style_dec2_guid类型zexcel_cell_style。

清除l。
如果ip_row初始。
将xl-row移到l-row。
ELSE。
将ip_row移到l行。
ENDIF。
< br> descr_ref = cl_abap_typedescr => describe_by_data(ip_value)。

*呼叫方法lo_style-> add_new_style
*导出
* ip_guid = zcl_excel_style_number_format => c_format_number_00
* RECEIVING =
*。


如果descr_ref-> type_kind ='P'。 "带包装的数字

lo_style_dec2 = lo_excel-> add_new_style()。
lo_style_dec2-> number_format-> format_code = zcl_excel_style_number_format => c_format_number_00。
lv_style_dec2_guid = lo_style_dec2-> get *将公式的默认值设置为excel中的2个小数位。
lo_worksheet-> set_cell(
ip_column = xl-colalpha
ip_row = l-row
ip_value = ip_value" L-value
ip_formula =空格"'ROUND(ip_value,2)'
ip_abap_type ='P'
ip_style = lv_style_dec2_guid" l-style
)。
ELSE。
lo_worksheet-> set_cell(
ip_column = xl-colalpha
ip_row = l-row
ip_value = ip_value" L-value
ip_formula =空格" ip_formula
* ip_style = l-style
)。
ENDIF 。

ENDFORM。 " fsetcell

shere_lin
7楼-- · 2020-08-20 03:00

您好,Venkat,

这里受影响的所有数据类型实际上都是'P'小数点2。

问题完全出在ABAP2XLSX set_cell方法上。

我需要知道如何使用ip_style参数或ip_formula将所有货币字段设置为2个小数位。

谢谢

一周热门 更多>