背景
使用ABAP2XLSX时,需要通过列名实现value方法调用,需要将列索引的数字12345转换为Excel列名ABCDE。
解决方案
ABAP2XLSX用的太少,很多姿势还不会,于是自己折腾写了一段,感觉还可以哈哈。
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MDG_MAT_UPLOAD_FORM->CONVERT_NUM2COLUMN
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_NUM TYPE INT4
* | [<---] E_COL TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
method convert_num2column.
data:lv_str type string,
lv_float type f.
lv_float = i_num.
do.
data(lv_mod) = lv_float mod 26.
if lv_mod eq 0.
lv_mod = 25."get last character 'Z'
else.
lv_mod -= 1.
endif.
data(lv_ahpla) = sy-abcde+lv_mod(1).
lv_str = |{ lv_ahpla case = upper }| && lv_str.
lv_float = lv_float / 26.
if lv_float le 1.
exit.
endif.
enddo.
e_col = lv_str.
endmethod.
其实不用这么麻烦,直接使用自带工具类ZCL_EXCEL_COMMON的方法CONVERT_COLUMN2ALPHA即可,通过ASCII码直接转字母的,肯定比我自己用字符截取的效率高得多。
源代码实现如下,如系统未安装ABAP2XLSX, 可以参考使用
<SIGNATURE>------------------------------------------------