发送格式化的Excel工作表作为邮件附件。

2020-09-09 19:50发布

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

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



嗨,

我一直在使用以下代码将格式化的Excel工作表作为附件发送到电子邮件中。

在下面的代码中,我想将单元格的格式从粗体更改为下划线。

我用下面的代码将Bold替换为Underline,但是任何人都不能建议这样做。

----------------

  • 部门

r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。

r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。

r_data = l_document-> create_simple_element(name ='Data'值='MATNR'parent = r_cell)。

r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

r_format-> set_attribute_ns(name ='Bold'prefix ='ss'value ='1')。

--------------------------------------------------- ---

  • 创建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'prefix ='xmlns'uri ='urn:schemas-microsoft-com:office:spreadsheet')。 l_element_root-> set_attribute_node(ns_attribute)。 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)。

  • 为文档属性创建节点。

r_element_properties = l_document-> create_simple_element(name ='TEST_REPORT'parent = l_element_root)。 l_value = sy-uname。 l_document-> create_simple_element(name ='Author'value = l_value parent = r_element_properties)。

  • 样式

r_styles = l_document-> create_simple_element(name ='Styles'parent = l_element_root)。

  • 标题样式

r_style = l_document-> create_simple_element(name ='Style'parent = r_styles)。 r_style-> set_attribute_ns(name ='ID'prefix ='ss'value ='Header')。 r_format = l_document-> create_simple_element(name ='Font'parent = r_style)。

  • 工作表

r_worksheet = l_document-> create_simple_element(name ='Worksheet'parent = l_element_root)。 r_worksheet-> set_attribute_ns(name ='Name'前缀='ss'值='PO Details')。

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')。

  • 列格式

r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。

  • 空白行

r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。

  • 列标题行

r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。 r_row-> set_attribute_ns(name ='AutoFitHeight'前缀='ss'值='1')。

  • 高级 不。

r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='EBELN'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

  • 用户名

r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='EBELP'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

  • 全名

r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='AEDAT'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

  • 部门

r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='MATNR'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。 r_format-> set_attribute_ns(name ='Bold'prefix ='ss'value ='1')。 r_format = l_document-> create_simple_element(name ='Interior'parent = r_style)。 r_format-> set_attribute_ns(name ='Color'prefix ='ss'value ='#C0C0C0')。 r_format-> set_attribute_ns(name ='Pattern'prefix ='ss'value ='Solid')。 r_format = l_document-> create_simple_element(name ='Alignment'parent = r_style)。 r_format-> set_attribute_ns(name ='Vertical'prefix ='ss'value ='Center')。 r_format-> set_attribute_ns(name ='WrapText'prefix ='ss'value ='1')。

  • 数据表

循环到it_ekpo INTO wa_ekpo。 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')。
  • l_value = sy-tabix。
  • 压缩l值NO-GAPS。
  • r_data = l_document-> create_simple_element(名称='数据'值= l_value父级= r_cell)。 "数据
  • r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='Number')。 "单元格格式
    • 玉宝

    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 = wa_ekpo-ebeln。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • EBELP

    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 = wa_ekpo-ebelp。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • AEDAT

    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 = wa_ekpo-aedat。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • MATNR

    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 = wa_ekpo-matnr。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'值='String')。"单元格格式ENDLOOP。

    • 创建流工厂

    l_streamfactory = l_ixml-> create_stream_factory()。

    • 将内部XML表连接到流工厂

    l_ostream = l_streamfactory-> create_ostream_itable(table = l_xml_table)。

    • 呈现文档

    l_renderer = l_ixml-> create_renderer(ostream = l_ostream document = l_document)。 l_rc = l_renderer-> render()。

    • 保存XML文档

    l_xml_size = l_ostream-> get_num_writing_raw()。

    在发送邮件之前,

    LOOP AT l_xml_table INTO wa_xml。

    清除objbin。

    objbin-line = wa_xml-data。

    将objbin附加到BINARY_CONTENT。

    ENDLOOP。

    在这里,objbin的类型为SOLIX,而BINARY_CONTENT的类型为SOLIX_TAB。

    现在,调用方法,

    呼叫方法文档-> ADD_ATTACHMENT

    导出I_ATTACHMENT_TYPE ='XLS'

    I_ATTACHMENT_SUBJECT ='我的附件'

    I_ATT_CONTENT_HEX = BINARY_CONTENT。

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

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



    嗨,

    我一直在使用以下代码将格式化的Excel工作表作为附件发送到电子邮件中。

    在下面的代码中,我想将单元格的格式从粗体更改为下划线。

    我用下面的代码将Bold替换为Underline,但是任何人都不能建议这样做。

    ----------------

    • 部门

    r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。

    r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。

    r_data = l_document-> create_simple_element(name ='Data'值='MATNR'parent = r_cell)。

    r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

    r_format-> set_attribute_ns(name ='Bold'prefix ='ss'value ='1')。

    --------------------------------------------------- ---

    • 创建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'prefix ='xmlns'uri ='urn:schemas-microsoft-com:office:spreadsheet')。 l_element_root-> set_attribute_node(ns_attribute)。 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)。

    • 为文档属性创建节点。

    r_element_properties = l_document-> create_simple_element(name ='TEST_REPORT'parent = l_element_root)。 l_value = sy-uname。 l_document-> create_simple_element(name ='Author'value = l_value parent = r_element_properties)。

    • 样式

    r_styles = l_document-> create_simple_element(name ='Styles'parent = l_element_root)。

    • 标题样式

    r_style = l_document-> create_simple_element(name ='Style'parent = r_styles)。 r_style-> set_attribute_ns(name ='ID'prefix ='ss'value ='Header')。 r_format = l_document-> create_simple_element(name ='Font'parent = r_style)。

    • 工作表

    r_worksheet = l_document-> create_simple_element(name ='Worksheet'parent = l_element_root)。 r_worksheet-> set_attribute_ns(name ='Name'前缀='ss'值='PO Details')。

    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')。

    • 列格式

    r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。 r_column = l_document-> create_simple_element(name ='Column'parent = r_table)。 r_column-> set_attribute_ns(name ='Width'前缀='ss'值='70')。

    • 空白行

    r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。

    • 列标题行

    r_row = l_document-> create_simple_element(name ='Row'parent = r_table)。 r_row-> set_attribute_ns(name ='AutoFitHeight'前缀='ss'值='1')。

    • 高级 不。

    r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='EBELN'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

    • 用户名

    r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='EBELP'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

    • 全名

    r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='AEDAT'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。

    • 部门

    r_cell = l_document-> create_simple_element(name ='Cell'parent = r_row)。 r_cell-> set_attribute_ns(name ='StyleID'prefix ='ss'value ='Header')。 r_data = l_document-> create_simple_element(name ='Data'值='MATNR'parent = r_cell)。 r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='String')。 r_format-> set_attribute_ns(name ='Bold'prefix ='ss'value ='1')。 r_format = l_document-> create_simple_element(name ='Interior'parent = r_style)。 r_format-> set_attribute_ns(name ='Color'prefix ='ss'value ='#C0C0C0')。 r_format-> set_attribute_ns(name ='Pattern'prefix ='ss'value ='Solid')。 r_format = l_document-> create_simple_element(name ='Alignment'parent = r_style)。 r_format-> set_attribute_ns(name ='Vertical'prefix ='ss'value ='Center')。 r_format-> set_attribute_ns(name ='WrapText'prefix ='ss'value ='1')。

    • 数据表

    循环到it_ekpo INTO wa_ekpo。 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')。
  • l_value = sy-tabix。
  • 压缩l值NO-GAPS。
  • r_data = l_document-> create_simple_element(名称='数据'值= l_value父级= r_cell)。 "数据
  • r_data-> set_attribute_ns(name ='Type'prefix ='ss'value ='Number')。 "单元格格式
    • 玉宝

    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 = wa_ekpo-ebeln。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • EBELP

    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 = wa_ekpo-ebelp。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • AEDAT

    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 = wa_ekpo-aedat。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'value ='String')。"单元格格式

    • MATNR

    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 = wa_ekpo-matnr。 r_data = l_document-> create_simple_element(name ='Data'值= l_value parent = r_cell)。 "数据r_data-> set_attribute_ns(name ='Type'前缀='ss'值='String')。"单元格格式ENDLOOP。

    • 创建流工厂

    l_streamfactory = l_ixml-> create_stream_factory()。

    • 将内部XML表连接到流工厂

    l_ostream = l_streamfactory-> create_ostream_itable(table = l_xml_table)。

    • 呈现文档

    l_renderer = l_ixml-> create_renderer(ostream = l_ostream document = l_document)。 l_rc = l_renderer-> render()。

    • 保存XML文档

    l_xml_size = l_ostream-> get_num_writing_raw()。

    在发送邮件之前,

    LOOP AT l_xml_table INTO wa_xml。

    清除objbin。

    objbin-line = wa_xml-data。

    将objbin附加到BINARY_CONTENT。

    ENDLOOP。

    在这里,objbin的类型为SOLIX,而BINARY_CONTENT的类型为SOLIX_TAB。

    现在,调用方法,

    呼叫方法文档-> ADD_ATTACHMENT

    导出I_ATTACHMENT_TYPE ='XLS'

    I_ATTACHMENT_SUBJECT ='我的附件'

    I_ATT_CONTENT_HEX = BINARY_CONTENT。

    付费偷看设置
    发送
    3条回答
    派大星 ヾ
    1楼 · 2020-09-09 20:23.采纳回答

    尝试一下。

    r_format-> set_attribute_ns(name ='Underline'prefix ='ss'value ='Single')。

    Violet凡
    2楼-- · 2020-09-09 20:31

    此消息已被审核

    歪着头看世界
    3楼-- · 2020-09-09 20:43

    有什么方法可以使用xml方法获得密码保护excel附件吗?

    一周热门 更多>