如何在后台运行模式生成Excel格式文件(收藏)
来源:互联网 发布:删失数据的处理 编辑:程序博客网 时间:2024/04/30 09:45
如果要生成纯正的Excel格式,一般可以采用普通OLE的方法,或者DOI(本质也是OLE)。但是这个方法有个前提,就是:必须在程序前台运行,并且前台的机器必须装了Office软件。
如何在后台生成Excel格式的文件呢?
本文就是解决这个问题。
说明:因为Excel支持XML格式的存储,所以我们使用Transformation program来产生Excel格式的XML文件,所以用这个方法产生的XLS文档还不是纯正的Excel二进制格式的文档,不过已经可以在大多数需要Excel格式的场合使用了,而且可以很方便的添加各种格式,比如字体大小、单元格颜色,,等等
需要注意的几点:
1、兼容一般的OpenOffice
2、Office2000之前的版本可能会打不开
3、如果包含图片、图表等,导出可能有困难
REPORT YTEST_090430_0203_01.
DATA:BEGIN OF ITAB OCCURS 0 ,
BELNR LIKE BKPF-BELNR ,
BLART LIKE BKPF-BLART ,
END OF ITAB.
DATA: XMLSTR TYPE STRING,
XML_TABLE TYPE STANDARD TABLE OF STRING,
XML_TABLE1 TYPE STANDARD TABLE OF BKPF-BELNR,
WA_XML LIKE LINE OF XML_TABLE.
DATA:DNAME(120) TYPE C.
START-OF-SELECTION.
SELECT BELNR BLART INTO TABLE ITAB FROM BKPF
UP TO 20 ROWS
WHERE BELNR IN
('0100000001','0100000002','0100000003','0100000004').
CALL TRANSFORMATION YZTESTEXCEL_090430
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 = 'D:/sap/xmlexcel.xls'
CODEPAGE = '8400'
FILETYPE = 'ASC'
TABLES
DATA_TAB = XML_TABLE.
DATA:BEGIN OF ITAB OCCURS 0 ,
BELNR LIKE BKPF-BELNR ,
BLART LIKE BKPF-BLART ,
END OF ITAB.
DATA: XMLSTR TYPE STRING,
XML_TABLE TYPE STANDARD TABLE OF STRING,
XML_TABLE1 TYPE STANDARD TABLE OF BKPF-BELNR,
WA_XML LIKE LINE OF XML_TABLE.
DATA:DNAME(120) TYPE C.
START-OF-SELECTION.
SELECT BELNR BLART INTO TABLE ITAB FROM BKPF
UP TO 20 ROWS
WHERE BELNR IN
('0100000001','0100000002','0100000003','0100000004').
CALL TRANSFORMATION YZTESTEXCEL_090430
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 = 'D:/sap/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.
* 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.
************************************************************************
Tcode: STRANS
YZTESTEXCEL_090430内容
<?sap.transform simple?>
<?mso-application progid="Excel.Sheet"?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="table"/>
<tt:template>
<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">
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
</ExcelWorkbook>
<Worksheet ss:Name="xxxx">
<Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="25" x:FullColumns="1" x:FullRows="1">
<Column ss:Width="120"/>
<Column ss:Width="220"/>
<tt:loop ref=".table">
<Row>
<Cell>
<Data ss:Type="String">
<tt:value ref="BELNR"/>
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<tt:value ref="BLART"/>
</Data>
</Cell>
</Row>
</tt:loop>
</Table>
</Worksheet>
</Workbook>
</tt:template>
</tt:transform>
注:如果要生成UTF-8的XML文件,可以更改CALL TRANSFORMATION的参数
- 如何在后台运行模式生成Excel格式文件(收藏)
- 如何在后台运行模式生成Excel格式文件
- 如何在后台运行模式生成Excel格式文件
- 如何在后台运行Heritrix
- flex如何在后台生成 xml
- 如何在后台播放音乐
- 如何在后台运行 Linux 命令并且将进程脱离终端
- 如何在后台运行 Linux 命令并且将进程脱离终端
- 如何在后台运行 Linux 命令并且将进程脱离终端
- 如何在后台正确使用脚本
- C#如何在后台调用Javascript
- C#如何在后台调用Javascript
- 微信小程序常见问题->上传文件后如何在后台(php)获取文件名解决方法
- 微信小程序常见问题->上传文件后如何在后台(php)获取文件名解决方法
- 利用jsp生成excel格式文件
- 利用jsp生成excel格式文件
- 如何在后台代码获取控制EditItemTemplate的控件
- JSF如何在后台获得前台页面的标签对象
- 最新的课程时间表,没有看见的同学可以看一下。
- AJAX 中使用confirm
- Meta标签
- html标签对象的特性和特殊样式归纳
- Http Handler 介绍
- 如何在后台运行模式生成Excel格式文件(收藏)
- 饶雪漫经典爱情语录
- 学习Microsoft .Net Remoting系列专题(基础篇)
- iBatis的SqlMapClient.insert()方法的返回值
- 做锚文本链接要注意什么
- Jdbc 统一数据库访问框架设计
- 资源整理
- Linux下MySQL5.1的安装
- 在Web站点中创建和使用Rss源