zoukankan      html  css  js  c++  java
  • excel通过转成xml格式模板,下载成excel文件

    源代码:
    report ztest_down_excel.
    
    data: begin of i_file occurs 0,
            val(255) type c,
          end of i_file.
    
    data begin of gt_test occurs 0.
    data matnr like mara-matnr.
    data maktx like makt-maktx.
    data end of gt_test.
    
    data v_filestr type string.
    data v_filename type string.
    data v_path type string.
    data v_fn type string.
    data v_len type i.
    
    select mara~matnr
           makt~maktx
      into corresponding fields of table gt_test
      from mara
      inner join makt on  mara~matnr eq makt~matnr
      where makt~spras eq '1'.
    
    "将内表转换为xml
    call transformation ztest_down_excel
           source table = gt_test[]
    *              head = v_head   "由于Transformation中不能出现中文,表头中文以结构变量传入
           result xml  v_filestr.
    
    "获取保存路径及保存文件名
    call method cl_gui_frontend_services=>file_save_dialog
      exporting
        window_title         = 'Download Files'  "窗口标题
        default_extension    = 'xls' 
        default_file_name    = 'Download Test'   "初始化文件名
        file_filter          = '(电子表格EXCEL)'
      changing
        filename             = v_filename    "文件名
        path                 = v_path       "路径(除了文件名)
        fullpath             = v_fn         "完整路径(包含文件名)
      exceptions
        cntl_error           = 1
        error_no_gui         = 2
        not_supported_by_gui = 3
        others               = 4.
    
    
    clear i_file[].
    call function 'SCMS_STRING_TO_FTEXT'
      exporting
        text      = v_filestr
      importing
        length    = v_len
      tables
        ftext_tab = i_file.
    
    
    call function 'GUI_DOWNLOAD'
      exporting
        filename = v_fn
        filetype = 'BIN'
      tables
        data_tab = i_file[].
    
    if sy-subrc eq 0.
      write 'Download successful!'.
    else.
      write 'Download failed!'.
    endif.

    excel文件变成xml:

    Exce转换XMl注意:
    1、单元格格式类型全部改为:string。
    2、不能出现中文,全部改为对应的英文,
    3、Worksheet 下table行列条件删除。
        <…ss:ExpandeRowCount="30">
    4、XML文件转换loop循环后:
    <Row ss:Index="6">  这里出现在循环后面不能限定index值,应删除
    5、自动换行参数<Row ss:AutoFitHeight="1"……>
    6、loop循环属性一样的空行直接删除
    XML导出EXCEL纸张方向控制:
      <PageSetup>
        <Layout x:Orientation="Landscape"/>    ''横向
        <Header x:Margin="0.31458333333333333"/>
        <Footer x:Margin="0.31458333333333333"/>
        <PageMargins x:Bottom="0.63888888888888884" x:Left="0.52986111111111112"
         x:Right="0.5" x:Top="0.37986111111111109"/>
      </PageSetup>
    XML导出EXCEL打印缩放比例控制:
      <Print>
        <ValidPrinterInfo/>
        <PaperSizeIndex>9</PaperSizeIndex>
        <Scale>77</Scale>
        <HorizontalResolution>300</HorizontalResolution>
        <VerticalResolution>300</VerticalResolution>
      </Print>
    XML导出 EXCEL单元格文本自动换行:
    <Style ss:ID="m79594592">
       <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
       <Borders>
        <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>
        <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/>
        <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2"/>
        <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>
       </Borders>
       <Font ss:FontName="Tahoma" x:CharSet="134" ss:Size="10.5" ss:Color="#000000"/>
    </Style>
    
    Transformation源码:
    
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
    
    <tt:root name="TABLE"/>
    <tt:root name="HEAD"/>
    
    <tt:template>
    
    <?xml version="1.0"?>
    <?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>2006-09-16T00:00:00Z</Created>
      <LastSaved>2014-12-25T10:26:33Z</LastSaved>
      <Version>14.00</Version>
     </DocumentProperties>
     <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
      <AllowPNG/>
      <RemovePersonalInformation/>
     </OfficeDocumentSettings>
     <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
      <WindowHeight>7980</WindowHeight>
      <WindowWidth>14805</WindowWidth>
      <WindowTopX>240</WindowTopX>
      <WindowTopY>135</WindowTopY>
      <ProtectStructure>False</ProtectStructure>
      <ProtectWindows>False</ProtectWindows>
     </ExcelWorkbook>
     <Styles>
      <Style ss:ID="Default" ss:Name="Normal">
       <Alignment ss:Vertical="Bottom"/>
       <Borders/>
       <Font ss:FontName="Tahoma" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
       <Interior/>
       <NumberFormat/>
       <Protection/>
      </Style>
      <Style ss:ID="s17">
       <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/>
       <Font ss:FontName="Tahoma" x:CharSet="134" x:Family="Swiss" ss:Color="#000000"/>
      </Style>
      <Style ss:ID="s18">
       <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/>
       <Font ss:FontName="Tahoma" x:CharSet="134" x:Family="Swiss" ss:Color="#000000"/>
       <Interior/>
      </Style>
      <Style ss:ID="s19">
       <Alignment ss:Vertical="Center"/>
      </Style>
     </Styles>
     <Worksheet ss:Name="SHEET1">
      <Table  x:FullColumns="1"
       x:FullRows="1" ss:StyleID="s17" ss:DefaultColumnWidth="76.5"
       ss:DefaultRowHeight="16.3125">        <!-- ---删除限制行/列数量语句-->
       <Column ss:StyleID="s18" ss:AutoFitWidth="0"/>
       <Column ss:Index="6" ss:StyleID="s18" ss:AutoFitWidth="0" ss:Span="2"/>
       <Column ss:Index="10" ss:StyleID="s18" ss:AutoFitWidth="0" ss:Span="7"/>
       <Column ss:Index="20" ss:StyleID="s18" ss:AutoFitWidth="0" ss:Span="3"/>
       <Column ss:Index="24" ss:StyleID="s18" ss:AutoFitWidth="0" ss:Width="114.75"/>
       <Column ss:StyleID="s18" ss:AutoFitWidth="0" ss:Span="3"/>
       <Row ss:Height="13.5" ss:StyleID="s19">
        <Cell><Data ss:Type="String"><tt:value ref="head.h001"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h002"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h003"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h004"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h005"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h006"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h007"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h008"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h009"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h010"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h011"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h012"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h013"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h014"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h015"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h016"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h017"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h018"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h019"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h020"/></Data></Cell>
    <!--    <Cell><Data ss:Type="String"><tt:value ref="head.h021"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h022"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h023"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="head.h024"/></Data></Cell>-->
       </Row>
    <tt:loop ref=".table">
       <Row ss:Height="13.5" ss:StyleID="s19">
        <Cell><Data ss:Type="String"><tt:value ref="ZART"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="PASTRTERM"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZWEEK"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="PRUEFLOS"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="SELMATNR"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="MAKTX"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="NORMT"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZSCQY"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="LOSMENGE"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="MENGENEINH"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="KOSCH"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZPZWH"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="RAUBE"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="CHARG"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZMM_LICHA"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZMM_HSDAT"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZMM_VFDAT"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="LAGORTCHRG"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="LGOBE"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="LGPBE"/></Data></Cell>
    <!--    <Cell><Data ss:Type="String"><tt:value ref="ZYHFF"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="ZZLZK"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="UNAME"/></Data></Cell>
        <Cell><Data ss:Type="String"><tt:value ref="UDATE"/></Data></Cell>-->
       </Row>
     </tt:loop>
      </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>
       <Unsynced/>
       <Print>
        <ValidPrinterInfo/>
        <PaperSizeIndex>9</PaperSizeIndex>
        <HorizontalResolution>600</HorizontalResolution>
        <VerticalResolution>600</VerticalResolution>
       </Print>
       <Selected/>
       <Panes>
        <Pane>
         <Number>3</Number>
         <ActiveRow>6</ActiveRow>
         <ActiveCol>1</ActiveCol>
        </Pane>
       </Panes>
       <ProtectObjects>False</ProtectObjects>
       <ProtectScenarios>False</ProtectScenarios>
      </WorksheetOptions>
     </Worksheet>
    </Workbook>
    
    </tt:template>
    
    </tt:transform>
  • 相关阅读:
    使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
    Spring Cloud负载均衡:使用Feign作客户端负载均衡
    Spring Cloud负载均衡:使用zuul作服务器端负载均衡
    Word模板替换
    【转】Eureka集群
    巧用JavaScript语言特性解耦页面间调用(观察者模式)
    MySQL 视图触发器事务存储过程函数
    MySQL py模块的链接Navicat可视化工具
    MySQL 单表查询多表查询
    MySQL 表与表之间建立关系
  • 原文地址:https://www.cnblogs.com/caizjian/p/6160117.html
Copyright © 2011-2022 走看看