SAP STRANS 导出EXCEL
第一次用strans是2014年,第二次就是2017年。。。最近看到有人在问EXCEL双表头的问题,想着就把STRANS导出EXCEL的方法保存下来吧。方便大家参考。
1.已经记不清到底改做哪些类型的了,所以就自己做了个EXCEL模板。

这里用的是Excel 2016 (PS:其实和哪个版本关系不太大,毕竟最后都是存成XML格式的。)
2.另存EXCEL为XML。

这样就得到了模板EXCEL的XML格式文件。这是待处理的原xml
3.进入SAP,输入事务代码STRANS,新建ZLY_STRANS,并选择简单模板



<transform>这是整个strans的主体部分,root是跟节点,这个是调用strans导出时对应的节点名称。
<template>这是文件的主体部分,我们要做的就是把我们的EXCEL对应的XML文件流,嵌入到这个模板中间。然后点击代码格式化(这一步很重要)
注意:如果xml中有些特殊格式违反XML格式规则,需要单独出来。(如,换行回车 ...)
这时候就可以写代码进行测试了。

测试运行

结束后到桌面打开文件,这里有个提示扩展名不匹配。因为我们用的是2016,xml是03excel。。。

选择是。看看效果:

看起来没问题。
格式问题先不管,我们来做数据替换。
我要把2,5,8,11这三个数对应位置上改成 25811,25811,25811,25811.
这时候需要去strans里改对应位置的value取值。(注意,加root值处理,需要先确定好作用域,如果只是针对这一行,可以把选值范围放在row里)

(这里直接把ROOT当作一个结构,然后用value1-4作为root的字段目录,然后把value1-4一一对应到2,5,8,11值的位置)

如上。这时候我们去修改程序,新建一个value1-4的结构,调用试试。


结果如下:

这样我们就修改了对应EXCEL中值了。
到这里就做好了一些简单的excel处理。
下面再处理一些内表数据,如模板中FIELD1,2,3,4,5,6,7.....下面对应的值,这里因为前面有个固定文本,开发,新技术,这些字段。这样就影响到我们数据的处理了,可以把文本也放到table里传进来。单是前面有固定的合并单元格,所以这里做不了。
不过没关系,这里把 ‘内部培训’ ‘日常签到’取消了,一切为了输出内表。
假设我的ROOT结构里还有一个ITB字段,这个ITB是个内表,对,这样ROOT就是个深层次结构了。
为了输出这个内表,我们需要把STRANS里那几个VALUE101-201行取消了,只留一行,作为循环结构。(为了简单,这里只把VALUE101-VALUE201两行用内表展示出来)
先去STRANS里改取值。
先删除'开发'文本所在行

修改'新技术'所在行。
row前加上循环:

row结束后取消循环

修改循环中的取值

这时候就可以去改程序,测试了。

结果如下:

附上最终STRANS和测试代码:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html=
"http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Created>2015-06-05T18:19:34Z</Created>
<LastSaved>2020-04-10T08:09:46Z</LastSaved>
<Version>16.00</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<AllowPNG/>
<RemovePersonalInformation/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>12645</WindowHeight>
<WindowWidth>22260</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>0</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="m264764296">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="m264761264">
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
<Interior ss:Color="#FFFF00" ss:Pattern="Solid"/>
</Style>
<Style ss:ID="m264761284">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
</Style>
<Style ss:ID="m264761324">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="m264761344">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s16">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s17">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s18">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
</Style>
<Style ss:ID="s22">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s23">
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
</Style>
<Style ss:ID="s25">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
</Borders>
</Style>
<Style ss:ID="s26">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s30">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s35">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s36">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="s37">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="s38">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="2"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="s39">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
<NumberFormat ss:Format="0%"/>
</Style>
<Style ss:ID="s44">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Interior ss:Color="#00B050" ss:Pattern="Solid"/>
</Style>
<Style ss:ID="s45">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Interior ss:Color="#00B0F0" ss:Pattern="Solid"/>
</Style>
<Style ss:ID="s46">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Interior ss:Color="#0070C0" ss:Pattern="Solid"/>
</Style>
<Style ss:ID="s47">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
</Borders>
<Interior ss:Color="#FFC000" ss:Pattern="Solid"/>
</Style>
<Style ss:ID="s48">
<Alignment ss:Vertical="Bottom"/>
<Font ss:Color="#000000" ss:FontName="仿宋" ss:Size="11" x:CharSet="134" x:Family="Modern"/>
</Style>
<Style ss:ID="s57">
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
</Borders>
<Font ss:Color="#FF0000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="s63">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="仿宋" ss:Size="16" x:CharSet="134" x:Family="Modern"/>
</Style>
<Style ss:ID="s65">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
<Style ss:ID="s66">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
<Borders>
<Border ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="2"/>
<Border ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
<Border ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="2"/>
</Borders>
<Font ss:Bold="1" ss:Color="#000000" ss:FontName="等线" ss:Size="11" x:CharSet="134"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25" ss:ExpandedColumnCount="17" ss:ExpandedRowCount="14" x:FullColumns="1" x:FullRows="1">
<Column ss:Span="13" ss:StyleID="s18"/>
<Row ss:AutoFitHeight="0">
<Cell ss:MergeAcross="13" ss:MergeDown="1" ss:StyleID="s63">
<Data ss:Type="String">2020年度工作总结</Data>
</Cell>
<Cell ss:StyleID="s48"/>
<Cell ss:StyleID="s48"/>
<Cell ss:StyleID="s48"/>
</Row>
<Row ss:Height="15">
<Cell ss:Index="15" ss:StyleID="s48"/>
<Cell ss:StyleID="s48"/>
<Cell ss:StyleID="s48"/>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:MergeAcross="1" ss:MergeDown="1" ss:StyleID="m264761284"/>
<Cell ss:MergeAcross="2" ss:StyleID="s65">
<Data ss:Type="String">一季度</Data>
</Cell>
<Cell ss:MergeAcross="2" ss:StyleID="s66">
<Data ss:Type="String">二季度</Data>
</Cell>
<Cell ss:MergeAcross="2" ss:StyleID="s66">
<Data ss:Type="String">三季度</Data>
</Cell>
<Cell ss:MergeAcross="2" ss:StyleID="m264764296">
<Data ss:Type="String">四季度</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="3" ss:StyleID="s36">
<Data ss:Type="String">1月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">2月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">3月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">4月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">5月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">6月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">7月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">8月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">9月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">10月</Data>
</Cell>
<Cell ss:StyleID="s37">
<Data ss:Type="String">11月</Data>
</Cell>
<Cell ss:StyleID="s38">
<Data ss:Type="String">12月</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:MergeDown="1" ss:StyleID="m264761264">
<Data ss:Type="String">开发任务</Data>
</Cell>
<Cell ss:StyleID="s23">
<Data ss:Type="String">新需求</Data>
</Cell>
<Cell ss:StyleID="s35">
<Data ss:Type="Number">1</Data>
</Cell>
<Cell ss:StyleID="s44">
<Data ss:Type="Number">
<tt:value ref="ROOT.VALUE1"/>
</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">3</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">4</Data>
</Cell>
<Cell ss:StyleID="s46">
<Data ss:Type="Number">
<tt:value ref="ROOT.VALUE2"/>
</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">6</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">7</Data>
</Cell>
<Cell ss:StyleID="s45">
<Data ss:Type="Number">
<tt:value ref="ROOT.VALUE3"/>
</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">9</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">10</Data>
</Cell>
<Cell ss:StyleID="s47">
<Data ss:Type="Number">
<tt:value ref="ROOT.VALUE4"/>
</Data>
</Cell>
<Cell ss:StyleID="s17">
<Data ss:Type="Number">12</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="2" ss:StyleID="s25">
<Data ss:Type="String">运维需求</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="Number">21</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">22</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">23</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">24</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">25</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">26</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">27</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">28</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">29</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">30</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">31</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="Number">32</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:MergeDown="1" ss:StyleID="s57">
<Data ss:Type="String">公司指派外部项目</Data>
</Cell>
<Cell ss:StyleID="s26">
<Data ss:Type="String">海外项目</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.01</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.02</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.03</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.04</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.05</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.06</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">7.0000000000000007E-2</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.08</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.09</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.1</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.11</Data>
</Cell>
<Cell ss:StyleID="s39">
<Data ss:Type="Number">0.12</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="2" ss:StyleID="s26">
<Data ss:Type="String">国内项目</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">A</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">B</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">C</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">D</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">E</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">F</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">G</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">H</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">I</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">J</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">K</Data>
</Cell>
<Cell ss:StyleID="s16">
<Data ss:Type="String">L</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:MergeDown="2" ss:StyleID="m264761324">
<Data ss:Type="String">内部培训</Data>
</Cell>
<Cell ss:StyleID="s26">
<Data ss:Type="String">业务</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD1</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD2</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD3</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD4</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD5</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD6</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD7</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD8</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD9</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD10</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD11</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">FIELD12</Data>
</Cell>
</Row>
<tt:loop name="I" ref="ROOT.ITB">
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="2" ss:StyleID="s26">
<Data ss:Type="String">
<tt:value ref="$I.VALUE01"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE02"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE03"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE04"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE05"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE06"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE07"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE08"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE09"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE10"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE11"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE12"/>
</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<tt:value ref="$I.VALUE13"/>
</Data>
</Cell>
</Row>
</tt:loop>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:MergeDown="2" ss:StyleID="m264761344">
<Data ss:Type="String">日常签到</Data>
</Cell>
<Cell ss:StyleID="s26">
<Data ss:Type="String">正常考勤</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE301</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE302</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE303</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE304</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE305</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE306</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE307</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE308</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE309</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE310</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE311</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE312</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="2" ss:StyleID="s26">
<Data ss:Type="String">缺打卡</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE401</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE402</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE403</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE404</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE405</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE406</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE407</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE408</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE409</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE410</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE411</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE412</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="20.0625">
<Cell ss:Index="2" ss:StyleID="s30">
<Data ss:Type="String">请假</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE501</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE502</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE503</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE504</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE505</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE506</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE507</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE508</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE509</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE510</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE511</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">VALUE512</Data>
</Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<PaperSizeIndex>9</PaperSizeIndex>
<HorizontalResolution>300</HorizontalResolution>
<VerticalResolution>300</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>10</ActiveRow>
<ActiveCol>16</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
</tt:template>
</tt:transform>
REPORT zly_strans. TYPES:BEGIN OF itb,
value01 TYPE string,
value02 TYPE string,
value03 TYPE string,
value04 TYPE string,
value05 TYPE string,
value06 TYPE string,
value07 TYPE string,
value08 TYPE string,
value09 TYPE string,
value10 TYPE string,
value11 TYPE string,
value12 TYPE string,
value13 TYPE string,
END OF itb.
DATA:itab TYPE TABLE OF itb.
TYPES:BEGIN OF ty_out,
value1 TYPE string,
value2 TYPE string,
value3 TYPE string,
value4 TYPE string,
itb LIKE itab,
END OF ty_out.
DATA:gt_out TYPE TABLE OF ty_out,
gw_out TYPE ty_out.
DATA:g_xmlstr TYPE string,
gt_xml TYPE STANDARD TABLE OF string,
gw_xml LIKE LINE OF gt_xml.
DATA g_filename TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_down LIKE rlgrap-filename DEFAULT 'D:\'.
SELECTION-SCREEN END OF BLOCK blk1. INITIALIZATION.
*&———————————————————————*
* AT SELECTION-SCREEN
*&———————————————————————*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_down. CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = p_down
title = 'choose your file'
mode = 'S'
IMPORTING
filename = p_down
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
CHECK sy-subrc = 0 AND NOT p_down IS INITIAL. START-OF-SELECTION. DATA:v_t LIKE LINE OF itab.
v_t-value01 = '开发'.
v_t-value02 = '我是11'.
v_t-value03 = '我是12'.
v_t-value04 = '我是13'.
v_t-value05 = '我是14'.
v_t-value06 = '我是15'.
v_t-value07 = '我是16'.
v_t-value08 = '我是17'.
v_t-value09 = '我是18'.
v_t-value10 = '我是19'.
v_t-value11 = '我是20'.
v_t-value12 = '我是21'.
v_t-value13 = '我是22'.
APPEND v_t TO gw_out-itb.
v_t-value01 = '新技术'.
v_t-value02 = '我是31'.
v_t-value03 = '我是32'.
v_t-value04 = '我是33'.
v_t-value05 = '我是34'.
v_t-value06 = '我是35'.
v_t-value07 = '我是36'.
v_t-value08 = '我是37'.
v_t-value09 = '我是38'.
v_t-value10 = '我是39'.
v_t-value11 = '我是40'.
v_t-value12 = '我是41'.
v_t-value13 = '我是42'.
APPEND v_t TO gw_out-itb.
gw_out-value1 = '25811'.
gw_out-value2 = '25811'.
gw_out-value3 = '25811'.
gw_out-value4 = '25811'.
* gw_out-itb[] = itb[].
CALL TRANSFORMATION zly_strans
SOURCE root = gw_out
RESULT XML g_xmlstr.
REPLACE FIRST OCCURRENCE OF 'utf-16' IN g_xmlstr WITH 'gbk'.
APPEND g_xmlstr TO gt_xml.
g_filename = p_down. CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_filename
codepage = '8400'
filetype = 'ASC'
TABLES
data_tab = gt_xml.
IF sy-subrc EQ 0.
MESSAGE 'success' TYPE 'S'.
ELSE.
MESSAGE 'download FILE fail' TYPE 'I'.
ENDIF.
最后说下一个小问题,在strans转xml的时候其实是用的CL_BCS_CONVERT,这里在处理的时候会给xml加个不起眼的小标记:CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE
这是各种codepage的(BOM:Byte Order Mark)

这是SAP标准加的,对应的属性在这:

这是不同格式加的。。。如果单独不想要。。。
CALL METHOD cl_abap_conv_in_ce=>create
EXPORTING
input = lv_request_xml_xstr (Xstring variable with XML)
RECEIVING
conv = lr_conv.
CALL METHOD lr_conv->read
IMPORTING
data = lv_request_xml. (String variable with XML Encoding UTF-8)
系统默认的是utf-16en。。。。=
SAP STRANS 导出EXCEL的更多相关文章
- C#使用Aspose.Cells导出Excel简单实现
首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...
- 利用poi导出Excel
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...
- [django]数据导出excel升级强化版(很强大!)
不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...
- NPOI导出Excel
using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- asp.net DataTable导出Excel 自定义列名
1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 前端导出Excel兼容写法
今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...
- JS导出excel 兼容ie、chrome、firefox
运用js实现将页面中的table导出为excel文件,页面显示如下: 导出的excel文件显示如下: 实现代码: <!DOCTYPE html> <html> <head ...
- Oracle导出excel
oracle导出excel(非csv)的方法有两种,1.使用sqlplus spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...
随机推荐
- EmlBuilder:一款超轻量级的EML格式电子邮件阅读和编辑工具
EmlBuilder 是一款超轻量级的电子邮件阅读和编辑工具,针对EML格式的文件具有非常强大的解析和容错能力,可实现超文本邮件的编写,并具备内嵌图片的编辑功能.该工具内部使用EmlParse对电子邮 ...
- NumPy学习4
今天学习NumPy相关数组操作 NumPy 中包含了一些处理数组的常用方法,大致可分为以下几类:(1)数组变维操作(2)数组转置操作(3)修改数组维度操作(4)连接与分割数组操作 numpy_test ...
- Linux指令详解之:进程与系统负载
目录 5.4 进程(process) 5.4.1 守护进程 5.4.2 僵尸进程 5.4.3 孤儿进程 6.0 进程监控指令 6.0.1 ps(报告当前系统的进程状态) 6.0.2 ps aux 结果 ...
- PVE常用命令
1.查看集群下的节点信息 root@pve63-node172:~# pvecm nodes Membership information ---------------------- Nodeid ...
- Linux系统发邮件
Linux系统发送邮件 管理服务器时我们经常需要写一些监测脚本,然后在出问题的时候通过邮件来通知 SMTP SMTP(Simple Mail Transfer Protocol)简易邮件传输通讯协议 ...
- 【Linux】5.6 Shell打印输出指令
Shell打印输出命令 1. echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式:echo string 您可以使用echo实现更复杂的输出 ...
- 2021年扩展DevOps的6种方法
2021年扩展DevOps的6种方法 加强devops流程的自动化 为了满足快速.高质量应用程序交付的需求,现代软件团队需要一种超越常规性能测试的方法.在这里,以devops为中心的方法可以提供更快. ...
- 【深度解析】SkyWalking 10.2.0版本安全优化与性能提升实战指南
前言 Apache SkyWalking 作为云原生可观测性领域的佼佼者,在微服务架构监控中扮演着至关重要的角色.然而,官方版本在安全性.镜像体积和功能扩展方面仍有优化空间.本文将分享一套完整的 Sk ...
- Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】
〇.前言 Redis 集群的核心优势在于高可用性.可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景. 本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群 ...
- SQLAlchemy 核心概念与同步引擎配置详解
title: SQLAlchemy 核心概念与同步引擎配置详解 date: 2025/04/14 00:28:46 updated: 2025/04/14 00:28:46 author: cmdra ...