文件导入

一:CSV类型文件导入,使用数据流操作

[1]文件上传部分,方法将上传的文件路径保存到一个隐藏域内,在需要导入的时候去隐藏域内取得文件路径后进行导入操作,临时文件通过订时器来进行删除。

        #region 文件上传
        protected void FileUpLoad(object sender, EventArgs e)
        {
            string filePath = ""; //上传文件客户端路径
            string path = ""; //上传文件名
            string UpFileName = ""; //上传后服务器端文件路径

            try
            {
                if (FileUpload.PostedFile.FileName == "")
                {
                    this.AddMessage("I_019");
                    this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
                }
                else
                {
                    //取得客户端文件路径
                    filePath = FileUpload.PostedFile.FileName.ToString();
                    string[] PathList = filePath.Split('\\');

                    //取得上传文件的文件名
                    path = PathList[PathList.Count() - 1];
                    FileUpload.PostedFile.SaveAs(Server.MapPath(path));

                    //获取上传成功后路径
                    UpFileName = Server.MapPath(path);

                    //使用数据流取得上传文件内容
                    StreamReader m_streamReader = null;
                    m_streamReader = FEB.getStreamReader(filePath);
                    m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
                    string InSystemList = m_streamReader.ReadLine();
                    InSystemList = m_streamReader.ReadLine();
                    if (InSystemList != null)
                    {
                        int SystemCount = 1;
                        //取得导入数据的内容
                        string[] arr = InSystemList.Split(',');
                        string CustomerName = arr[1].ToString(); //客户名称-对应英文缩写名称
                        string SystemNO = arr[2].ToString(); //机型编号
                        string ID = arr[3].ToString(); //机台编号
                        string STN = arr[4].ToString(); //STN
                        string SUB_STN = arr[5].ToString(); //SUBTAN
                        string IssueDate = arr[6].ToString(); // 日本发出日期
                        string TargetDueDate = arr[7].ToString(); // FCO预计完成日期
                        string BudgetTerminatedDate = arr[8].ToString(); // 预算结束日期
                        string AnnouncementDate = arr[9].ToString(); //机台发布日期
                        string ScheduleDate = arr[10].ToString(); //机台预计完成日期
                        string PerformedDate = arr[11].ToString(); //?
                        string ECO_NO = arr[12].ToString(); //FCO编号
                        string RANK = arr[13].ToString(); //类型
                        string Subject = arr[14].ToString(); //描述
                        string Treatment = arr[15].ToString(); //对策

                        //判断FCO是否已经重复导入
                        int FCOCount = FIB.RepeatFCO(ECO_NO);
                        if (FCOCount == 0)
                        {
                            DataTable FCOTable = FIB.FCODataTable(-1);

                            while (InSystemList != null)
                            {
                                InSystemList = m_streamReader.ReadLine();
                                if (InSystemList != null)
                                {
                                    SystemCount = SystemCount + 1;
                                }
                            }
                            DataColumn dc = new DataColumn();
                            dc.ColumnName = "SystemCount";
                            dc.DefaultValue = SystemCount;
                            dc.DataType = Type.GetType("System.String");
                            FCOTable.Columns.Add(dc);
                            FCOTable.AcceptChanges();

                            DataColumn dcRank = new DataColumn();
                            dcRank.ColumnName = "Rank";
                            dcRank.DefaultValue = RANK;
                            dcRank.DataType = Type.GetType("System.String");
                            FCOTable.Columns.Add(dcRank);
                            FCOTable.AcceptChanges();

                            DataRow row = FCOTable.NewRow();
                            FCOTable.Rows.Add(row);

                            FCOTable.Rows[0]["FCO_NO"] = ECO_NO;
                            FCOTable.Rows[0]["FCO_SUBJECT"] = Subject;
                            FCOTable.Rows[0]["FCO_TREATMENT"] = Treatment;

                            gv_FCO_Import.DataSource = FCOTable;
                            gv_FCO_Import.DataBind();
                            FileAddress.Value = filePath;
                        }
                        else
                        {
                            this.AddMessage("E_034");
                            this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
                        }
                    }
                    else
                    {
                        this.AddMessage("E_035");
                        this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
                    }
                }
            }
            catch (Exception)
            {
                this.AddMessage("E_035");
                this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
            }
        }
        #endregion

 

[2]文件导入部分

        #region 导入上传文件
        protected void FileImport(object sender, EventArgs e)
        {
            string filePath = ""; //上传文件客户端路径
            string path = ""; //上传文件名
            string UpFileName = ""; //上传后服务器端文件路径
            try
            {
                if (FileAddress.Value.ToString() == "")
                {
                    this.AddMessage("I_019");
                    this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
                }
                else
                {
                    //取得客户端文件路径
                    filePath = FileAddress.Value.ToString();
                    string[] PathList = filePath.Split('\\');

                    //取得上传文件的文件名
                    path = PathList[PathList.Count() - 1];
                    FileUpload.PostedFile.SaveAs(Server.MapPath(path));

                    //获取上传成功后路径
                    UpFileName = Server.MapPath(path);

                    //使用数据流取得上传文件内容
                    StreamReader m_streamReader = null;
                    m_streamReader = FEB.getStreamReader(filePath);
                    m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
                    string InSystemList = m_streamReader.ReadLine();

                    //用于判断是否已经新建FCO记录
                    bool IsFCO = false;
                    //记录新建FCOID
                    int FCOID = -1;

                    //开始导入
                    while (InSystemList != null)
                    {
                        InSystemList = m_streamReader.ReadLine();
                        if (InSystemList != null)
                        {
                            //取得条导入数据的内容
                            string[] arr = InSystemList.Split(',');
                            string CustomerName = arr[1].ToString(); //客户名称-对应英文缩写名称
                            string SystemNO = arr[2].ToString(); //机型编号
                            string ID = arr[3].ToString(); //机台编号
                            string STN = arr[4].ToString(); //STN
                            string SUB_STN = arr[5].ToString(); //SUBTAN
                            string IssueDate = arr[6].ToString(); // 日本发出日期
                            string TargetDueDate = arr[7].ToString(); // FCO预计完成日期
                            string BudgetTerminatedDate = arr[8].ToString(); // 预算结束日期
                            string AnnouncementDate = arr[9].ToString(); //机台发布日期
                            string ScheduleDate = arr[10].ToString(); //机台预计完成日期
                            string PerformedDate = arr[11].ToString(); //?
                            string ECO_NO = arr[12].ToString(); //FCO编号
                            string RANK = arr[13].ToString(); //类型
                            string Subject = arr[14].ToString(); //描述
                            string Treatment = arr[15].ToString(); //对策

                            if (IsFCO == false)
                            {
                                FCOID = FIB.ImportFCO(ECO_NO, SUB_STN, IssueDate, TargetDueDate, BudgetTerminatedDate, RANK, Subject, Treatment);
                                IsFCO = true;
                            }
                            else
                            {
                                FIB.ImportFCOSystem(FCOID.ToString(), FIB.getFCONO(ID, "M_MACHINE", "MCH_ID", "MCH_NO"), AnnouncementDate, ScheduleDate, PerformedDate, FIB.getCodeValue("STN", SUB_STN));
                            }
                        }
                    }
                    this.AddMessage("I_021");
                    this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
                }
            }
            catch (Exception)
            {
                this.AddMessage("E_035");
                this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
            }
        }
        #endregion

 

备注

具体项目内容参见 08-2-026-001AdvanTestErp一期

FCO导入部分内容。

posted @ 2009-06-15 17:43  适渊  阅读(533)  评论(0编辑  收藏  举报