`

通过OLE操作写OFFICE文件(转)

阅读更多
本代码是通过OLE技术操作EXCEL,将SAP的数据填写到本地EXCEL中,Office运行在SAP的GUI界面外,注意红色代码。
REPORT ZRSDEMO01 NO STANDARD PAGE HEADING.
* this report demonstrates how to send some ABAP data to an
* EXCEL sheet using OLE automation.
*必须包含
INCLUDE OLE2INCL.
* handles for OLE objects
*申明相关的OFFICE的OLE对象
DATA: H_EXCEL TYPE OLE2_OBJECT,        " Excel object
      H_MAPL TYPE OLE2_OBJECT,         " list of workbooks
      H_MAP TYPE OLE2_OBJECT,          " workbook
      H_ZL TYPE OLE2_OBJECT,           " cell
      H_F TYPE OLE2_OBJECT.            " font
TABLES: SPFLI.
DATA  H TYPE I.
* table of flights
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.

*&---------------------------------------------------------------------*
*&   Event START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* read flights
  SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-007
       EXCEPTIONS
            OTHERS     = 1.
* start Excel(创建对象)
  CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
  PERFORM ERR_HDL.
*设置office对象是否显示
  SET PROPERTY OF H_EXCEL  'Visible' = 1.
  PERFORM ERR_HDL.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-008
       EXCEPTIONS
            OTHERS     = 1.
* get list of workbooks, initially empty
  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
  PERFORM ERR_HDL.
* add a new workbook
  CALL METHOD OF H_MAPL 'Add' = H_MAP.
  PERFORM ERR_HDL.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-009
       EXCEPTIONS
            OTHERS     = 1.
* output column headings to active Excel sheet
  PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
  PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
  PERFORM FILL_CELL USING 1 3 1 'Von'(003).
  PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
  PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
  LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
    H = SY-TABIX + 1.
    PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
    PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
    PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
    PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
    PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
  ENDLOOP.
* disconnect from Excel
*
  CALL METHOD OF    H_EXCEL  'QUIT'.
  FREE OBJECT H_EXCEL.
  PERFORM ERR_HDL.

*---------------------------------------------------------------------*
*       FORM FILL_CELL                                                *
*---------------------------------------------------------------------*
*       sets cell at coordinates i,j to value val boldtype bold       *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J BOLD VAL.
*get cell
  CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
  PERFORM ERR_HDL.
*set cell value
  SET PROPERTY OF H_ZL 'Value' = VAL .
  PERFORM ERR_HDL.
*Get cell font
  GET PROPERTY OF H_ZL 'Font' = H_F.
  PERFORM ERR_HDL.
*set cell font
  SET PROPERTY OF H_F 'Bold' = BOLD .
  PERFORM ERR_HDL.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  ERR_HDL
*&---------------------------------------------------------------------*
*       outputs OLE error if any                                       *
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ERR_HDL.
IF SY-SUBRC <> 0.
  WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
  STOP.
ENDIF.
ENDFORM.                    " ERR_HDL



原文地址:http://blog.csdn.net/compassbutton/archive/2007/10/20/1833898.aspx
分享到:
评论

相关推荐

    MS Office OLE Automation Using C++.

    OLE(Object Linking and Embedding)自动化允许开发人员利用Office套件的功能,如创建、编辑和操作文档,而无需用户手动打开应用程序。这在需要集成Office功能到自定义应用或自动化工作流程时非常有用。 本文将...

    vb中OLE之WORD

    OLE的主要目的是实现跨应用的数据共享和交互,使VB应用程序能直接操作这些外部对象,从而增强功能和用户体验。 在VB中使用OLE,首先需要了解OLE控件。OLE控件是VB工具箱中的一种,它充当一个容器,用于在VB界面中...

    Perl中使用Win32_OLE模块读写Excel的方法1

    通过Win32::OLE,Perl程序员可以在不依赖特定平台的情况下,对Excel文档进行读取和写入操作,这对于跨平台的数据处理非常有用。 **使用Perl和Win32::OLE模块读写Excel的优势** 1. **跨平台兼容性**:Perl语言本身...

    OfficeExcel连接查询microsoft.ACE.oledb组件

    1. **Microsoft ACE.OLEDB驱动程序**:这是由Microsoft提供的一个数据库引擎,用于读取和写入Microsoft Office文件格式,包括Excel 2007及以后版本的.xlsx和.xlsm文件。它取代了早前的Jet Engine,支持更高级的数据...

    OLE操作word和excel

    以上就是使用C++Builder通过OLE操作Word和Excel的基本步骤和示例。这个过程中,你需要注意错误处理,因为COM接口调用可能会失败,需要适当捕获和处理异常。同时,了解Word和Excel的VBA接口可以帮助你找到更多可用的...

    目前真正最全的OLE操作Excel的完整代码

    然而,需要注意的是,直接操作Office组件可能会影响性能,并且在多线程环境中需要特别小心,以避免冲突或异常。因此,在处理大量数据或复杂逻辑时,考虑使用专门的数据处理库或API可能是更优的选择。

    Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)

    Asp.net可以通过COM互操作调用Microsoft Office应用程序(如Excel)来创建和编辑Excel文件。首先,需要在服务器上安装Office,并启用COM组件。然后,通过创建Excel对象,添加工作表,设置单元格值等步骤,可以生成...

    VC OLE方式读写EXCEL

    当我们需要在VC++程序中操作Excel文件时,OLE自动化是一种常用的方法。本篇将详细介绍如何利用VC++ MFC的OLE方式读写Excel 2003文件,并探讨相对于ODBC方式的优势。 首先,理解OLE自动化。OLE自动化允许一个应用...

    VC控制WORD(OLE自动化)

    通过OLE自动化技术,开发者能够利用VC编写代码来创建和编辑Word文档,实现复杂的数据报表生成等功能。 #### 三、关键技术点详解 ##### 3.1 创建Word文档 要实现在VC中创建Word文档,首先需要通过OLE技术创建一个...

    pb通过ole访问tif文件

    在PB中,我们可以创建一个OLE对象,将它绑定到支持TIF文件的外部应用程序,如Adobe Acrobat Reader或Microsoft Office中的图片查看器,以便在PB应用中查看和操作TIF文件。 以下是实现这个功能的步骤: 1. **创建...

    EXCEL.WORD操作类(OLE)

    通过OLE,你可以直接在文档中创建、编辑和操作这些对象,而无需离开当前的应用程序。 2. **VC++与OLE**:Visual C++(VC++)是微软提供的一个集成开发环境,支持C++编程,也包括对OLE的全面支持。开发者可以使用MFC...

    C#操作Excel(OLEDB)

    本示例探讨了如何使用C#通过OLEDB(Object Linking and Embedding, Database)接口来操作Microsoft Excel文件。OLEDB是微软提供的一种数据访问技术,允许程序与各种类型的数据源进行交互,包括Excel工作簿。 首先,...

    C++builder2010利用OLE操作EXCEl

    通过研究这些代码,你可以更深入地了解如何在C++Builder 2010中使用OLE技术操作Excel,并且可能也能学习到如何封装和复用二进制文件操作的代码。这将极大地提升你的C++编程能力和跨应用集成技能。

    以ole方式读取excel文件

    3. 使用OLE读取Excel文件:要以OLE方式读取Excel文件,首先需要在编程环境中导入相关的库或模块,例如在VBScript、VBA或.NET框架中的`Microsoft.Office.Interop.Excel`。然后,你可以创建一个Excel Application对象...

    使用OLE自动化方式操作Excel表格

    OLE是微软提出的一种技术,它使得不同程序能够共享数据和功能,如在Word文档中嵌入Excel电子表格。OLE自动化则进一步扩展了这个概念,允许通过编程语言(如VBA、Python、C#等)控制支持OLE的对象,例如Microsoft ...

    ABAP OLE开发技术

    通过学习ABAP OLE技术,开发者能够控制其他程序,使得SAP系统能够自动化执行其他程序的任务,例如Microsoft Office应用程序的操作,这种技术在数据导入导出、自动化报告生成等方面尤为有用。 知识点概述如下: 1. ...

    Go-go-ole-golang的Win32OLE实现

    通过这个库,开发者可以创建、查询和操作COM对象,实现自动化任务,例如与Excel、Word等Office应用进行交互,或者控制其他支持OLE的软件。 【标签】"Go开发-其它杂项"表明这是一门关于Go语言编程的特殊主题,不归属...

    Microsoft.ACE.OLEDB.12.0

    总的来说,理解并正确使用 Microsoft.ACE.OLEDB.12.0 提供程序对于需要与 Office 文件进行数据操作的开发人员至关重要。通过安装 AccessDatabaseEngine.exe,可以解决无法注册提供程序的错误,从而能够无缝地在应用...

    office转pdf

    本文将详细介绍如何使用Java编程语言实现"Office转PDF"的方法,主要涉及Word、Excel和PowerPoint这三种Office文件类型的转换。 首先,我们需要理解的是,Office文档与PDF之间的转换涉及到对文件格式的解析和重新...

    OleDb驱动程序

    它允许开发人员在无需安装完整Office套件的情况下,从.NET Framework中读取和写入Office文件。在本文中,我们将深入探讨如何使用OleDb驱动程序在ASP.NET应用程序中进行Excel文件的导入和导出,以及优化其性能。 ###...

Global site tag (gtag.js) - Google Analytics