Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7185373
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2009-03-06 09:09:50

如果要生成纯正的Excel格式,一般可以采用普通OLE的方法,或者DOI(本质也是OLE)。但是这个方法有个前提,就是:必须在程序前台运行,并且前台的机器必须装了Office软件。
如何在后台生成Excel格式的文件呢?
本文就是解决这个问题。
 
说明:因为Excel支持XML格式的存储,所以我们使用Transformation program来产生Excel格式的XML文件,所以用这个方法产生的XLS文档还不是纯正的Excel二进制格式的文档,不过已经可以在大多数需要Excel格式的场合使用了,而且可以很方便的添加各种格式,比如字体大小、单元格颜色,,等等
 
需要注意的几点:
1、兼容一般的OpenOffice
2、Office2000之前的版本可能会打不开
3、如果包含图片、图表等,导出可能有困难
 
REPORT  z_barry_test.

DATA:BEGIN OF itab OCCURS 0 ,
       matnr LIKE makt-matnr ,
       maktx LIKE makt-maktx ,
     END OF itab.

DATA: xmlstr TYPE string,
      xml_table TYPE STANDARD TABLE OF string,
      wa_xml LIKE LINE OF xml_table.

DATA:dname(120TYPE c.

START-OF-SELECTION.

  SELECT matnr maktx INTO TABLE itab FROM makt
    UP TO 20 ROWS
    WHERE spras = '1'.

  CALL TRANSFORMATION ztestexcel
    SOURCE table = itab[]
    RESULT XML xmlstr.

  REPLACE FIRST OCCURRENCE OF 'encoding="utf-16"' IN xmlstr WITH 'encoding="gbk"'.
  APPEND xmlstr TO xml_table.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = 'c:\xmlexcel.xls'
      codepage = '8400'
      filetype = 'ASC'
    TABLES
      data_tab = xml_table.

*  dname = '/usr/sap/TZK/DVEBMGS00/work/xmlexcel.xls'.
*  OPEN DATASET dname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT  .
*  IF sy-subrc NE 0. EXIT. ENDIF.
*  LOOP AT xml_table INTO wa_xml.
*    TRANSFER wa_xml TO dname.
*  ENDLOOP.
*  CLOSE DATASET dname.
 
 
ztestexcel内容:
 



 
 
                  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="">
     
     

     
       
         
         
         
           
             
               
                 
               

             

             
               
                 
               

             

           

         

       

     

   

 


 
注:如果要生成UTF-8的XML文件,可以更改CALL TRANSFORMATION的参数
阅读(11904) | 评论(15) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2009-08-31 19:29:28

有时间测试一下,老白,佩服你哈,牛人

chinaunix网友2009-06-09 10:36:37

拜托,那个'GUI_DOWNLOAD'是为了下载到本地看看行不行的,后台执行的东西当然不可能放到frontend了!难道都没有看到注释的那些么? * dname = '/usr/sap/TZK/DVEBMGS00/work/xmlexcel.xls'. * OPEN DATASET dname FOR OUTPUT IN TEXT MODE ENCODING DEFAULT . * IF sy-subrc NE 0. EXIT. ENDIF. * LOOP AT xml_table INTO wa_xml. * TRANSFER wa_xml TO dname. * ENDLOOP. * CLOSE DATASET dname.

chinaunix网友2009-06-09 10:31:32

没时间测试,这个真的可以放在后台运行吗? 感觉有问题啊,用到'GUI_DOWNLOAD'的话,跟 这个人的疑惑一样! 时间:2009-05-14 09:31:51 IP地址:202.173.236.★

chinaunix网友2009-05-14 11:47:33

老白实在太强了,又学了一招

chinaunix网友2009-05-14 09:31:51

测试了,执行后 'c:\xmlexcel.xls' 是在Server 还是 Client? 现在我都在Server和Client都没有看到!!!