TIPTOP ERP 与 Excel交互的编程应用 - 图文

更新时间:2023-11-11 11:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

TIPTOP ERP 与 Excel交互的编程应用

TIPTOP ERP 与 Excel交互的编程应用

1、TIPTOP ERP 汇出资料到Excel

2、Excel导入资料到TIPTOP ERP系统

A.Excel导入资料到TIPTOP ERP的原理

调用客户端GDC目录/bin下面的Windde.dll或Wincom.dll组件,然后打开本机安装的Excel软件处理资料

注意:Windde.dll或Wincom.dll都是后台偷偷打开了Excel,前台是看不到的 你可以在任务管理器里看到每导入一个Excel就会开启一个EXCEL.EXE的进程

B.关键代码编写

B-1.根据程序处理Excel资料的规则,coder先将excel模板放到服务器上,这里代码写下载功能,供用户下载excel资料模板 #demo

[python] view plaincopyprint?

1. FUNCTION p413_download_excel() #服务器下载模板 2. DEFINE l_linuxPath STRING 3. DEFINE l_winPath STRING

4. DEFINE l_status LIKE type_file.num5 5.

6. LET l_linuxPath = \7. LET l_winPath = \

8. LET l_status = cl_download_file(l_linuxPath,l_winPath) 9. IF l_status THEN

10. CALL cl_err(l_linuxPath,\11. ELSE

12. CALL cl_err(l_linuxPath,\13. END IF 14. END FUNCTION

B-2.处理excel资料,将excel资料导入TIPTOP ERP系统 #demo

[python] view plaincopyprint?

1. FUNCTION p413_upload_excel() #导入Excel 2. DEFINE l_sql STRING

3. DEFINE l_prostr LIKE ze_file.ze03 4. DEFINE l_fileLocation STRING 5. DEFINE xlApp,iRes,iRow INTEGER 6. DEFINE i LIKE type_file.num5 7. DEFINE l_cnt LIKE type_file.num5 8. DEFINE l_oeb16 LIKE oeb_file.oeb16 9. DEFINE l_errcnt LIKE type_file.num5 10. DEFINE l_msg LIKE type_file.chr1000 11. DEFINE g_oeb DYNAMIC ARRAY OF RECORD 12. seq LIKE type_file.num5, 13. oeb01 LIKE oeb_file.oeb01, 14. oeb03 LIKE oeb_file.oeb03,

15. oeb16 LIKE oeb_file.oeb16 16. END RECORD 17.

18. CALL g_oeb.clear() 19.

20. LET l_prostr = cl_getmsg(\21. WHILE TRUE #选择要导入资料的Excel文件

22. PROMPT l_prostr CLIPPED FOR l_fileLocation ATTRIBUTE(WITHOUT DEFA

ULTS)

23. ON ACTION browse_document

24. LET l_fileLocation = cl_browse_file() 25.

26. ON ACTION ACCEPT 27. EXIT WHILE 28.

29. ON ACTION CANCEL 30. EXIT WHILE 31.

32. ON IDLE g_idle_seconds 33. CALL cl_on_idle() 34. RETURN 35. END PROMPT 36. END WHILE 37.

38. LET l_errcnt = 0

39. CALL ui.interface.frontCall('WinCOM','CreateInstance',['Excel.Applica

tion'],[xlApp])

40. IF xlApp <> -1 THEN

41. CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'WorkBoo

ks.Open',l_fileLocation],[iRes]) 42. IF iRes <> -1 THEN

43. CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'Act

iveSheet.UsedRange.Rows.Count'],[iRow]) 44. IF iRow > 1 THEN

45. FOR i = 2 TO iRow #第2行开始,第1行为Excel抬头

46. INITIALIZE l_oeb16 TO NULL 47. #Excel 1 列

48. CALL ui.interface.frontCall('WinCOM','GetProperty',[xlAp

p,'ActiveSheet.Cells('||i||',1).Value'],[g_oeb[i-1].seq]) 49. #Excel 2 列

50. CALL ui.interface.frontCall('WinCOM','GetProperty',[xlAp

p,'ActiveSheet.Cells('||i||',2).Value'],[g_oeb[i-1].oeb01]) 51. #Excel 3 列

52. CALL ui.interface.frontCall('WinCOM','GetProperty',[xlAp

p,'ActiveSheet.Cells('||i||',3).Value'],[g_oeb[i-1].oeb03]) 53. #Excel 4 列

54. CALL ui.interface.frontCall('WinCOM','GetProperty',[xlAp

p,'ActiveSheet.Cells('||i||',4).Value'],[g_oeb[i-1].oeb16]) 55. END FOR 56. END IF 57. END IF 58. END IF

59. CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'Quit'],[iRe

s])

60. CALL ui.interface.frontCall('WinCOM','ReleaseInstance',[xlApp],[iRes]

) 61.

62. IF g_oeb.getLength() <= 0 THEN 63. CALL cl_err('','anm-259',1) 64. ELSE

65. LET g_rec_b = g_oeb.getLength() 66. LET l_msg = '共导入',g_rec_b,'笔!' 67. CALL cl_msgany(0,0,l_msg) 68. CALL p413_b() 69. END IF 70. END FUNCTION

本文来源:https://www.bwwdw.com/article/78sv.html

Top