Flex导入Excel文件示例

 
1.SDK3.0
2.导入文件用FileFilter过滤。由于是示例,只写了xls
3.导入文件解析在Java端完成,前端在导入之后,从session中得到导入文件的解析结果,然后再调用Java方法销毁session

[代码] [Flash/ActionScript/Flex]代码

 

01

<?xml version="1.0" encoding="utf-8"?>

02

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

03

    <mx:Script>

04

        <![CDATA[

05

            import mx.rpc.remoting.mxml.RemoteObject;

06

            import mx.collections.ArrayCollection;

07

            import mx.controls.Alert;

08

            import mx.rpc.events.FaultEvent;

09

            import mx.rpc.events.ResultEvent;

10

            private var fileRefer:FileReference = new FileReference()

11

            //浏览按钮,选择文件

12

            private function importClick(event:MouseEvent):void {

13

                //过滤文件

14

                var fileType:FileFilter = new FileFilter("Excel","*.xls");

15

                var fileTypes:Array = new  Array(fileType);

16

                //导入

17

                fileRefer.addEventListener(Event.SELECT,parseExcel);

18

                fileRefer.browse(fileTypes);

19

            }

20

              

21

            private function parseExcel(evt:Event):void {

22

                //调用Servlet

23

                var url:URLRequest=new  URLRequest("/web/ExcelUp?loadType=parseExcel");

24

                fileRefer.upload(url);

25

                //定时器  获取session

26

                setTimeout(function():void{

27

                        readfromflex();

28

                    },3000);

29

            }

30

            //Remote对象

31

            private var ro:RemoteObject=new RemoteObject("operdisp_display_excelImportService");

32

            //获取session

33

            private function readfromflex():void {

34

                ro.showBusyCursor = true;

35

                ro.getExcelSession();

36

                ro.getExcelSession.addEventListener(ResultEvent.RESULT,getExcelResult);

37

                ro.getExcelSession.addEventListener(FaultEvent.FAULT,setFault); 

38

            }

39

            //回调

40

            private function getExcelResult(e:ResultEvent):void{

41

                if (e.result != null) {

42

                    var arr:ArrayCollection = e.result as ArrayCollection;

43

                    //打印导入的excel中的数据

44

                    log.debug(arr);

45

                    //销毁session

46

                    distorySession();

47

                } else {

48

                    readfromflex();

49

                }

50

            }

51

            //销毁session

52

            private function distorySession():void {

53

                ro.showBusyCursor = true;

54

                ro.distorySession();

55

                ro.distorySession.addEventListener(ResultEvent.RESULT,distorySuccess);

56

                ro.distorySession.addEventListener(FaultEvent.FAULT,setFault);

57

            }

58

              

59

            private function distorySuccess(e:ResultEvent):void {

60

                  

61

            }

62

            private function setFault(e:FaultEvent):void{

63

                Alert.yesLabel="确认";

64

            }

65

        ]]>

66

    </mx:Script>

67

    <mx:Button label="导入" click="importClick(event)">

68

    </mx:Button>

69

</mx:Application>

[代码] [Java]代码

01

package demo

02

  

03

import java.io.ByteArrayOutputStream;

04

import java.io.IOException;

05

import java.io.InputStream;

06

import java.util.Iterator;

07

import java.util.List;

08

  

09

import javax.servlet.ServletException;

10

import javax.servlet.http.HttpServlet;

11

import javax.servlet.http.HttpServletRequest;

12

import javax.servlet.http.HttpServletResponse;

13

  

14

import org.apache.commons.fileupload.FileItem;

15

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

16

import org.apache.commons.fileupload.servlet.ServletFileUpload;

17

  

18

import demo.invoke.demoServiceInvoke;

19

import epm.core.model.SysUserInfo;

20

import epm.sp.priv.user.webapp.util.UserUtil;

21

@SuppressWarnings("unchecked")

22

public class ExcelServlet extends HttpServlet {

23

      

24

    private static final long serialVersionUID = 678209845731804056L;

25

  

26

  

27

    @Override

28

    protected void doPost(HttpServletRequest request,

29

            HttpServletResponse response) throws ServletException,IOException {

30

        doGet(request,response);

31

    }

32

  

33

    @Override

34

    protected void doGet(HttpServletRequest request,

35

            HttpServletResponse response) throws ServletException,IOException {

36

        request.setCharacterEncoding("UTF-8");

37

        String loadType = request.getParameter("loadType");

38

        try {

39

            if ("parseExcel".endsWith(loadType)) {

40

                parseExcel(request,response);

41

            }

42

        }

43

        catch (Exception e) {

44

            e.printStackTrace();

45

        }

46

    }

47

      

48

    //导入excel

49

    public void parseExcel(HttpServletRequest request,HttpServletResponse response) throws Exception {

50

        DiskFileItemFactory factory = new DiskFileItemFactory();

51

        ServletFileUpload fileUp = new ServletFileUpload(factory);

52

        fileUp.setSizeMax(1024 * 1025 * 1024);

53

        List items = fileUp.parseRequest(request);

54

        Iterator iter = items.iterator();

55

        while (iter.hasNext()) {

56

             FileItem item = (FileItem) iter.next();

57

             if (!item.isFormField()) {

58

                 InputStream stream = item.getInputStream();

59

                 ByteArrayOutputStream out = new ByteArrayOutputStream(1000);

60

                 byte[] b = new byte[1000];

61

                 int n;

62

                 while ((n = stream.read(b)) != -1)

63

                     out.write(b,0,n);

64

                 stream.close();

65

                 out.close();

66

                 out.toByteArray();

67

                 byte[] file = out.toByteArray();

68

                 try {  

69

                     demoServiceInvoke.Invoke service = demoServiceInvoke.getInstance(request);

70

                     List list = service.getExcel(file,acOrgNo); 

71

                     request.getSession().setAttribute("recordInfo",list);

72

                     request.getSession().setAttribute("error","");

73

                 } catch(Exception e) {

74

                     request.getSession().setAttribute("recordInfo",null);

75

                     request.getSession().setAttribute("error",e.getMessage());

76

                 }

77

             }

78

        }

79

    }

80

}

 

仅供参考

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...