我们经常需要通过上载excel或者是txt文本然后进行处理。。处理excel和txt文本有多种方法,一般都是通过调用function  module或者是method来完成:

1、导入excel并处理:

1)一般这些上载文件的都要先在       AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.  做处理,excel的处理一般是:

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
                        EXPORTING
                                      mask      = ' '
                                         static    = 'X'
                        CHANGING
                                    file_name = p_file.

2)使用上载的FM,把excel的数据上载到对应的内表:

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
                                EXPORTING
                                       filename                = l_file
                                       i_begin_col             = 1
                                       i_begin_row             = 3
                                       i_end_col               = 37
                                       i_end_row               = 10000
                                TABLES
                                        intern                  = lt_temp
                                EXCEPTIONS
                                       inconsistent_parameters = 1
                                                   upload_ole              = 2
                                 OTHERS                  = 3.
  IF sy-subrc <> 0.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

其中it_temp这个内表可以定义为都是字符字段的集合,然后再把这个内表的各个字段赋值到要处理的内表。当然也可以指定excel的格式,第几个输入什么字段,同时it_temp也要按照相对于的字段顺序。

2、导入excel的多个sheet处理:

1)首先做一个CASE处理:分别去读取excel里面的数据放到不同的内表里面

DO 3 TIMES.
    CASE SY-INDEX.
      WHEN 1.
        SHEET_NAME = 'Header'.
        ASSIGN PO_HEADER TO <DYN_WA>.
      WHEN 2.
        SHEET_NAME = 'PO List'.
        ASSIGN PO_ITEMS2 TO <DYN_WA>.
      WHEN 3.
        SHEET_NAME = 'GL account'.
        ASSIGN GL_DATA TO <DYN_WA>.
    ENDCASE.
    PERFORM GET_EXCEL_DATA.
  ENDDO.

2)调用一个function module(自己定义的,有需要可以问博主要。。不便公布)

CALL FUNCTION ''自己定义 "                       call function get file data
  EXPORTING
    FILENAME                      = P_TABLE                                      文件路径
    SHEET_NAME              = SHEET_NAME                             sheet name
    I_BEGIN_COL             = I_BEGIN_COL                               1
    I_BEGIN_ROW             = I_BEGIN_ROW                             2
    I_END_COL               = I_END_COL                                     256
    I_END_ROW               = I_END_ROW                                   65536
  TABLES
    INTERN                  = I_INTERN                                                输出内表
  EXCEPTIONS
    INCONSISTENT_PARAMETERS = 1
    UPLOAD_OLE              = 2
    OTHERS                  = 3.
  IF SY-SUBRC <> 0.
    MESSAGE I003(ZSOH) WITH TEXT-001.
    STOP.
  ENDIF.

3、导出excel的处理:

1)直接调用导出excel的FM处理:

SET LOCALE LANGUAGE SY-LANGU.
  TRANSLATE P_TABLE TO LOWER CASE.
  REPLACE '.xlsx' WITH  '' INTO P_TABLE.
  REPLACE '.xls' WITH  '' INTO P_TABLE.
  CONCATENATE P_TABLE  '_log_'  SY-DATUM SY-UZEIT '.xls' INTO L_FILE.
  PERFORM INSER_TEXT.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      FILENAME                = L_FILE
      WRITE_FIELD_SEPARATOR   = 'X'
      CONFIRM_OVERWRITE       = 'X'
      FILETYPE                = 'DAT'
      CODEPAGE                = '8404'
    TABLES
      DATA_TAB                = MIRO_LOG
    EXCEPTIONS
      FILE_WRITE_ERROR        = 1
      NO_BATCH                = 2
      GUI_REFUSE_FILETRANSFER = 3
      INVALID_TYPE            = 4
      NO_AUTHORITY            = 5
      UNKNOWN_ERROR           = 6
      HEADER_NOT_ALLOWED      = 7
      SEPARATOR_NOT_ALLOWED   = 8
      FILESIZE_NOT_ALLOWED    = 9
      HEADER_TOO_LONG         = 10
      DP_ERROR_CREATE         = 11
      DP_ERROR_SEND           = 12
      DP_ERROR_WRITE          = 13
      UNKNOWN_DP_ERROR        = 14
      ACCESS_DENIED           = 15
      DP_OUT_OF_MEMORY        = 16
      DISK_FULL               = 17
      DP_TIMEOUT              = 18
      FILE_NOT_FOUND          = 19
      DATAPROVIDER_EXCEPTION  = 20
      CONTROL_FLUSH_ERROR     = 21
      OTHERS                  = 22.

4、导入txt文本并处理:

1)一样的,要对上传的文件进行检查,AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.  :

CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mask     = ',*.*,*.*.'
      mode     = 'O'
    IMPORTING
      filename = filename
    EXCEPTIONS
      OTHERS   = 0.

2)导入txt文本的时候有两个方法,不过一般现在比较多用的是后面那个method。

第一个是:      CALL FUNCTION 'WS_UPLOAD'

DATA: %type LIKE sy-msgty.

CALL FUNCTION 'WS_UPLOAD'
   EXPORTING
*   CODEPAGE                      = ' '
      filename                      = a_file
      filetype                      = 'DAT'
    TABLES
      data_tab                      = itab
   EXCEPTIONS
     conversion_error              = 1
     file_open_error               = 2
     file_read_error               = 3
     invalid_type                  = 4
     no_batch                      = 5
     unknown_error                 = 6
     invalid_table_width           = 7
     gui_refuse_filetransfer       = 8
     customer_error                = 9
     OTHERS                        = 10.
  %type = sy-msgty.
  IF sy-subrc = '1'.
    %type = 'I'.
  ENDIF.

第二个是:          CALL METHOD cl_gui_frontend_services=>gui_upload

CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
        filename                 = i_file
*      FILETYPE                 = 'DAT'      "MCS deleted by LIUYI 20060825
        codepage                 = codepage
        dat_mode                  = 'X'        "MCS added by LIUYI 20060825
        has_field_separator       = tab_key    "MCS added by LIUYI 20060825
    CHANGING
        data_tab                 = itab[]
    EXCEPTIONS
        file_open_error          = 1
        file_read_error          = 2
        no_batch                 = 3
        gui_refuse_filetransfer  = 4
        invalid_type             = 5
        no_authority             = 6
        unknown_error            = 7
        bad_data_format          = 8
        header_not_allowed       = 9
        separator_not_allowed    = 10
        header_too_long          = 11
        unknown_dp_error         = 12
        access_denied            = 13
        dp_out_of_memory         = 14
        disk_full                = 15
        dp_timeout               = 16
        not_supported_by_gui     = 17
        error_no_gui             = 18
        OTHERS                   = 19.

5、导出txt处理:

1)直接使用标准的method:

DATA: codepage TYPE abap_encod VALUE '8400'.
DATA: o_file TYPE string.

o_file = logname.

CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                = o_file
      filetype                = 'DAT'
      codepage                = codepage
    CHANGING
      data_tab                = it_log[]
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      not_supported_by_gui    = 22
      error_no_gui            = 23
      OTHERS                  = 24.

导入下载excel(还有excel多个sheet)和txt文本的方法相关推荐

  1. EXCEL数字前补零且转换成文本型

    EXCEL数字前补零且转换成文本型 方法一.使用公式="0"&A2,只能根据需要补零: 方法二.使用公式=REPT(0,8-LEN(A2))&A2,  自动为数值补 ...

  2. java下载excel导入excel读取excel数据,将数据插入数据库

    10:如果你想导出excel表格,请链接:http://blog.csdn.net/xuanzhangran/article/details/54709221 导入的效果如下: 1:开始页面 2:点击 ...

  3. oracle导出一个表数据库,excel怎么导出多个表格数据库数据-一个excel表格中有多个sheet,如何将其导入oracle数......

    一个excel表格中有多个sheet,如何将其导入oracle数... 解决方案如下: 可以新建一个查询,查询你所说的2个表中的所有数据 运行查询,这样查询结果就包含了你要的数据,再把查询结果导出 就 ...

  4. matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...

    如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...

  5. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!...

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  6. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    @H_404_0@ 1.简介 @H_404_0@本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍 ...

  7. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  8. easypoi 模板导入、导出合并excel单元格功能

    easypoi 模板导入.导出合并单元格功能 参考: hutool 导出复杂excel(动态合并行和列) java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导 ...

  9. python处理多个excel文件-python多个excel文件合并成一个sheet

    运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...

最新文章

  1. 2013蓝桥杯-B-省赛-六-三部排序
  2. JavaScript | 数组的常用属性和方法
  3. WINDOWS下面使用ICE操作记录
  4. Highcharts 宽度溢出容器
  5. 新闻更新延时引发的学习,CACHE的利用。
  6. 实现销售榜单下载功能
  7. error: cannot read: aaa.java_Java期末考试习题库[选择题填空题改错题学生].doc
  8. catia圆角交点如何标注_标签软件如何制作口罩合格证
  9. linux的vi命令详解,linux vi命令详解
  10. Cortex-M0 Devices introduction
  11. 从1加到100,1到100求和 Python代码实现方法
  12. iOS各种证书配置总结
  13. java json解析(转)
  14. java计算机毕业设计妇女健康保健系统源码+mysql数据库+系统+lw文档+部署
  15. 跳跃表(SkipList)
  16. 怎么录屏?5 款免费无水印的录屏神器
  17. Python爬虫实战,QQ音乐爬取全部歌曲
  18. java lisp,摸索JVM上的LISP[Java编程]
  19. 华为magic book笔记本无法重装系统的麻烦
  20. 人类又被AI碾压,这次是星际争霸

热门文章

  1. 【夜读】一个人保持年轻的5个好习惯
  2. 今后,若你的公众号还按老方式发广告,罚款高的可达百万。有公众号已经被惩处了。
  3. 联通光猫后台 192.168.1.1登录
  4. 2012~2020年期货全品种TICK数据共享更新至2020.7.24
  5. 行人重识别常用数据集
  6. 格力 大松KJFC230A空气净化器开机自动灯闪烁不工作是什么原因?
  7. 本地事务与分布式事务
  8. java中获取中文拼音(全拼)和中文首字母
  9. 数据结构----二叉树
  10. 公司-摩拜单车:摩拜单车