一个上传EXCEL导入示例
REPORT ZTEST_UPEXCEL. data: gt_table type TABLE OF SFLIGHT,
gs_table like line of gt_table.
DATA:lt_excel TYPE TABLE OF ZSTABLINE.
DATA ls_excel LIKE LINE OF lt_excel.
FIELD-SYMBOLS:<fs>.
CONSTANTS: gc_begin_row TYPE i VALUE ,
"Beginning row of excel file
gc_begin_col TYPE i VALUE ,
"Beginning column of excel file
gc_end_row TYPE i VALUE ,
"Ending row of excel file
gc_end_col TYPE i VALUE .
"Ending column of excel file PARAMETERS: p_file LIKE rlgrap-filename. "定义存放上传文件路径名的变量 initialization. at selection-screen on VALUE-REQUEST FOR p_file. "这个只用在批处理这边
PERFORM sub_find USING p_file. start-of-selection. CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = "gc_begin_row'
i_begin_row = "gc_begin_col
i_end_col = "gc_end_row
i_end_row = "gc_end_col
TABLES
intern = lt_excel
* EXCEPTIONS
* INCONSISTENT_PARAMETERS = 1
* UPLOAD_OLE = 2
* OTHERS = 3
.
IF sy-subrc <> .
* Implement suitable error handling here
ENDIF.
LOOP AT lt_excel INTO ls_excel. ASSIGN COMPONENT ls_excel-col OF STRUCTURE gs_table to <fs>. "把工作区gs_tab中的字段赋给字段符号,而工作区gs_tab中的字段取决于内表中的列ls_excel-col
CONDENSE ls_excel-value. " 去掉空格
<fs> = ls_excel-value.
at end of row. "如果是最后一行就把工作区gs_tab存到内表gt_tab中
"gs_tab-row = ls_excel-row.
APPEND gs_table TO gt_table.
CLEAR: gs_table. ENDAT. ENDLOOP. INSERT SFLIGHT FROM TABLE GT_TABLE ACCEPTING DUPLICATE KEYS.
IF SY-SUBRC = .
COMMIT WORK.
MESSAGE '维护成功' type 'S'. ENDIF.
*&---------------------------------------------------------------------*
*& Form SUB_FIND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_FILE text
*----------------------------------------------------------------------*
FORM SUB_FIND USING P_P_FILE. * DATA: LD_DEFAULT_EXTENSION TYPE STRING VALUE 'CSV'.
DATA: LT_FILE_TAB TYPE FILETABLE.
DATA: LS_FILE_LINE TYPE FILE_TABLE.
DATA: LD_RC TYPE I,
LW_TITLE TYPE STRING,
LW_FILTER TYPE STRING. * 变量赋值
LW_TITLE = '选择文件'.
LW_FILTER = 'Excel文件|*.xl;*.xls;*.xlsx|'. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = LW_TITLE
FILE_FILTER = LW_FILTER
INITIAL_DIRECTORY = 'C:\'
CHANGING
FILE_TABLE = LT_FILE_TAB
RC = LD_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
CHECK LD_RC = 1.
READ TABLE LT_FILE_TAB INTO LS_FILE_LINE INDEX 1.
CHECK SY-SUBRC = 0.
MOVE LS_FILE_LINE-FILENAME TO p_file.
ENDIF.
" F4_FOR_FILES ENDFORM. " SUB_FIND
一个上传EXCEL导入示例的更多相关文章
- js上传Excel文件
一.问题 需要在项目里添加一个上传excel文件的功能,因为其他同样的后台里面有上传文件的功能,第一反应就是想着直接用.了解了一下发现它是利用bootstrap的fileinput实现的,但是我怎么都 ...
- asp.net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL
效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- java上传excel到后台解析入库
背景:最近需要做一个excel模板导入的功能,以便用户可以自己增删改查数据,当然,只有特别的用户才能有此权限,捋了捋思路,还是从前端写起 实现: 页面最后的效果如下,可以自己修改,删除,导入导出数据, ...
- EasyUi通过OCUpload上传及POI上传 实现导入xls表格功能
Easyui上传文件案例 第一步:要想使用OCUpload首先前端需要导入js包 <script type="text/javascript" src=&qu ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- POI上传Excel的小问题处理
package com.platform.utils.excel; import com.platform.utils.RRException; import org.springframework. ...
随机推荐
- Java Project部署到Tomcat服务器上
所有的JAVA程序员,在编写WEB程序时,一般都通过工具如 MyEclipse,编写一个WEB Project,通过工具让这个WEB程序和Tomcat关联.其实在我们可以通过JAVA程序部署到Tomc ...
- USACO Cow Pedigrees 【Dp】
一道经典Dp. 定义dp[i][j] 表示由i个节点,j 层高度的累计方法数 状态转移方程为: 用i个点组成深度最多为j的二叉树的方法树等于组成左子树的方法数 乘于组成右子树的方法数再累计. & ...
- Codeforces 484A - Bits 二进制找1
这题可以根据l, r 在二进制下的长度进行分类. l 的长度小于 r 的时候,有两种可能,一种是r 在二进制下是 1* 这种样子,故答案取 r : 一种是取答案为 (1LL << (r ...
- django 时间计数
value必须replace(tzinfo=None)变成datetime格式,否则格式不对不能相减.
- 关于RtlInitUnicodeString感想
01 VOID RtlInitUnicodeString (OUT PUNICODE_STRING DestinationString,IN PCWSTR SourceString OPTIONAL) ...
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)
上篇文章我们介绍了如何利用DataSet 和 DataAdaper对象来对单张表进行操作. 本文我们将介绍如何进行跨表操作. 我们通过具体例子方式进行演示,例子涉及到三张表. 1)student表(学 ...
- 基于visual Studio2013解决C语言竞赛题之0517矩阵
题目
- word2vec 中的数学原理具体解释(三)背景知识
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas M ...
- 【原创】Android 系统稳定性 - ANR(二)
文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之.编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. 1.2 如何分析ANR问题 引 ...
- 【转】C++类-内存分布
C++类内存分布 - 转载自Jerry19880126 - 博客园 的文章 在上面这篇文章的基础上做了些整理. 主要讨论了C++类对象的内存分布结构. 来看看编译器是怎么处理类成员内存分布的,特别是在 ...