格式化excel->使用IF_IXML_ELEMENT冻结数量单元格的顶部行和千位分隔符

2020-08-24 09:53发布

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

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


尊敬的大师,

我几乎已经完成了通过Abap编程使用IF_IXML_ELEMENT接口创建和格式化excel文件的操作,然后通过电子邮件将其附加并发送给收件人。 不幸的是,我还没有实现仅使3种格式出类拔萃的成就,我真的需要您的帮助。 这三件事如下:

1。 要冻结并修复excel表中的第一行,

2。 要在excel表的特定单元格中显示带有千位分隔符的数字,

3.To 以整行同时以粗体和红色显示数据的字体 ,我实现了两者未同时分离的问题。 我需要同时显示Excel文件中特定单元格或特定行的两个属性。

我真的很努力,并且搜索了很多次,但是我找不到关于excel格式这3个问题的任何解决方案。

如果您能帮助我,我将非常感谢Gurus。

感谢和问候。

您可以在下面找到我写的一些代码:

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S32 {color:#3399FF; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; }

数据:l_element_root类型参考到if_ixml_element,
ns_attribute类型参考到if_ixml_attribute,
r_element_properties类型参考到if_ixml_element,
r_element类型参考到if_ixml_element_,
r_sheet r_table类型REF到if_ixml_element,
r_column类型REF到if_ixml_element,
r_row类型REF到if_ixml_element,
r_cell类型REF到if_ixml_element,
r_data TYPE REF到if_ixml_element,
br> l_type TYPE字符串,
l_text(100)TYPE c,
r_styles TYPE REF to if_ixml_element,

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*创建ixml工厂
l_ixml = cl_ixml => create()。
*创建DOM对象模型
l_document = l_ixml-> create_document()。
*创建根节点工作簿 '
l_element_root = l_document-> create_simple_element(name ='Workbook'parent = l_document)。
l_element_root-> set_attribute(name ='xmlns'value ='urn:schemas-microsoft-com:office:spreadsheet')

ns_attribute = l_document-> create_namespace_decl(name ='ss'前缀='xmlns'uri ='urn:schemas-microsoft-com:office:spreadsheet')。
l_element_root-> set_attribute_node(ns_attribute_node(ns_attribute_node(ns_attribute_node(ns_attribute_node) )。

ns_attribute = l_document-> create_namespace_decl(name ='x'prefix ='xmlns'uri ='urn:schemas-microsoft-com:office:excel')。
l_element_root-> set_attribute_node( ns_attribute)。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*工作表
r_worksheet = l_document-> create_simple_element(name ='Worksheet'parent = l_element_root)。
r_worksheet-> set_attribute_ns(name ='Name'前缀='ss'值='MamülStok Raporu' )。

* Table
r_table = l_document-> create_simple_element(name ='Table'parent = r_worksheet)。
r_table-> set_attribute_ns(name ='FullColumns'prefix ='x'value = '1')。
r_table-> set_attribute_ns(name ='FullRows'prefix ='x'value ='1')。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*数据表
在pt_mamul中循环到ps_mamul。
r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。
**物料号
r_cell = l_document- > create_simple_element(name ='Cell'parent = r_row)。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Data')。 "" 110719 burda dur
* r_cell-> set_attribute_ns(name ='Bold'前缀='ss'值='1')。" 160719
l_value = ps_mamul-matnr。
r_data = l_document-> create_simple_element (name ='Data'值= l_value parent = r_cell)。 "数据
如果不是ps_mamul-general_total,则为初始值。
l_value ="。
r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式< br> else。
r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='Number')。 "单元格格式为
endif。

IF ps_mamul-negative_stock ='X'。
* r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Red')。 br> r_format-> set_attribute_ns(name ='Position'前缀='ss'值='Center')。
* r_data-> set_attribute_ns(name ='StyleID'前缀='ss'值='Red')。
ELSEIF ps_mamul-general_total ='X'。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Yellow')。
r_format_cell_yellow-> set_attribute_ns(name ='Color' 前缀='ss'值='#FF0000')。
ENDIF。
*材质说明
r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Data')。
l_value = ps_mamul-maktx。
r_data = l_document-> create_simple_element(name ='Data'值= l_value父级= r_cell) 。"数据
r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。 "单元格格式
IF ps_mamul-negative_stock ='X'。
r_cell-> set_attribute_ns(name ='StyleID'前缀='ss'值='Red')。"
ELSEIF ps_mamul-general_total ='X'。
r_cell-> set_attribute_ns(name ='StyleID'前缀='ss'值='Yellow')。
ENDIF。 >

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

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


尊敬的大师,

我几乎已经完成了通过Abap编程使用IF_IXML_ELEMENT接口创建和格式化excel文件的操作,然后通过电子邮件将其附加并发送给收件人。 不幸的是,我还没有实现仅使3种格式出类拔萃的成就,我真的需要您的帮助。 这三件事如下:

1。 要冻结并修复excel表中的第一行,

2。 要在excel表的特定单元格中显示带有千位分隔符的数字,

3.To 以整行同时以粗体和红色显示数据的字体 ,我实现了两者未同时分离的问题。 我需要同时显示Excel文件中特定单元格或特定行的两个属性。

我真的很努力,并且搜索了很多次,但是我找不到关于excel格式这3个问题的任何解决方案。

如果您能帮助我,我将非常感谢Gurus。

感谢和问候。

您可以在下面找到我写的一些代码:

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S32 {color:#3399FF; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; }

数据:l_element_root类型参考到if_ixml_element,
ns_attribute类型参考到if_ixml_attribute,
r_element_properties类型参考到if_ixml_element,
r_element类型参考到if_ixml_element_,
r_sheet r_table类型REF到if_ixml_element,
r_column类型REF到if_ixml_element,
r_row类型REF到if_ixml_element,
r_cell类型REF到if_ixml_element,
r_data TYPE REF到if_ixml_element,
br> l_type TYPE字符串,
l_text(100)TYPE c,
r_styles TYPE REF to if_ixml_element,

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*创建ixml工厂
l_ixml = cl_ixml => create()。
*创建DOM对象模型
l_document = l_ixml-> create_document()。
*创建根节点工作簿 '
l_element_root = l_document-> create_simple_element(name ='Workbook'parent = l_document)。
l_element_root-> set_attribute(name ='xmlns'value ='urn:schemas-microsoft-com:office:spreadsheet')

ns_attribute = l_document-> create_namespace_decl(name ='ss'前缀='xmlns'uri ='urn:schemas-microsoft-com:office:spreadsheet')。
l_element_root-> set_attribute_node(ns_attribute_node(ns_attribute_node(ns_attribute_node(ns_attribute_node) )。

ns_attribute = l_document-> create_namespace_decl(name ='x'prefix ='xmlns'uri ='urn:schemas-microsoft-com:office:excel')。
l_element_root-> set_attribute_node( ns_attribute)。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*工作表
r_worksheet = l_document-> create_simple_element(name ='Worksheet'parent = l_element_root)。
r_worksheet-> set_attribute_ns(name ='Name'前缀='ss'值='MamülStok Raporu' )。

* Table
r_table = l_document-> create_simple_element(name ='Table'parent = r_worksheet)。
r_table-> set_attribute_ns(name ='FullColumns'prefix ='x'value = '1')。
r_table-> set_attribute_ns(name ='FullRows'prefix ='x'value ='1')。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

*数据表
在pt_mamul中循环到ps_mamul。
r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。
**物料号
r_cell = l_document- > create_simple_element(name ='Cell'parent = r_row)。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Data')。 "" 110719 burda dur
* r_cell-> set_attribute_ns(name ='Bold'前缀='ss'值='1')。" 160719
l_value = ps_mamul-matnr。
r_data = l_document-> create_simple_element (name ='Data'值= l_value parent = r_cell)。 "数据
如果不是ps_mamul-general_total,则为初始值。
l_value ="。
r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式< br> else。
r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='Number')。 "单元格格式为
endif。

IF ps_mamul-negative_stock ='X'。
* r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Red')。 br> r_format-> set_attribute_ns(name ='Position'前缀='ss'值='Center')。
* r_data-> set_attribute_ns(name ='StyleID'前缀='ss'值='Red')。
ELSEIF ps_mamul-general_total ='X'。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Yellow')。
r_format_cell_yellow-> set_attribute_ns(name ='Color' 前缀='ss'值='#FF0000')。
ENDIF。
*材质说明
r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。
r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Data')。
l_value = ps_mamul-maktx。
r_data = l_document-> create_simple_element(name ='Data'值= l_value父级= r_cell) 。"数据
r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。 "单元格格式
IF ps_mamul-negative_stock ='X'。
r_cell-> set_attribute_ns(name ='StyleID'前缀='ss'值='Red')。"
ELSEIF ps_mamul-general_total ='X'。
r_cell-> set_attribute_ns(name ='StyleID'前缀='ss'值='Yellow')。
ENDIF。 >

付费偷看设置
发送
4条回答
N-Moskvin
1楼-- · 2020-08-24 10:18

Mehmut,

我对在多标签excel中动态着色行有类似的要求。 您能张贴一段彩色代码吗?

悻福寶寶
2楼-- · 2020-08-24 10:32

能否删除标记ABAP Connectivity? 谢谢

槿木_熙
3楼-- · 2020-08-24 10:29

是否有理由使用旧的2003 XML格式而不是2007 XLSX格式? 如果您使用 abap2xlsx ,则应该冻结窗格(ZCL_EXCEL_WORKSHEET的FREEZE_PANES方法)。

奄奄一息的小鱼
4楼-- · 2020-08-24 10:26

在您的情况下,使用转换是否更容易?

一周热门 更多>