Beispiel #1
0
        private string SaveNParseExcel(string fileName, Stream InputStream)
        {
            string wwwpath = CommonHelper.ChartPath + Guid.NewGuid().ToString() + Path.GetExtension(fileName);

            using (Stream stream = File.Create(Server.MapPath(wwwpath)))
            {
                InputStream.Seek(0, SeekOrigin.Begin);
                BinaryReader reader     = new BinaryReader(InputStream);
                int          BufferSize = 655360;        // 640 KB
                byte[]       buffer     = reader.ReadBytes(BufferSize);

                while (buffer.Length > 0)
                {
                    stream.Write(buffer, 0, buffer.Length);
                    buffer = reader.ReadBytes(BufferSize);
                }
                reader.Close();
            }

            /*OleDbIncomingDataParser	parser = new OleDbIncomingDataParser(ExcelVersion.Excel80);
             * DataSet ds = parser.Parse(Server.MapPath(wwwpath), null);*/

            IMCOleDBHelper helper = (IMCOleDBHelper)Activator.GetObject(typeof(IMCOleDBHelper), ConfigurationManager.AppSettings["McOleDbServiceString"]);
            DataSet        ds     = helper.ConvertExcelToDataSet(Server.MapPath(wwwpath));

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml("<Lists><File>" + Server.MapPath(wwwpath) + "</File></Lists>");

            XmlNode rootNode = xmlDoc.SelectSingleNode("Lists");

            foreach (DataTable table in ds.Tables)
            {
                XmlNode listNode = xmlDoc.CreateElement("List");

                XmlNode sheetNode = xmlDoc.CreateElement("SheetName");
                sheetNode.InnerText = table.TableName;

                foreach (DataColumn column in table.Columns)
                {
                    XmlNode colNode = xmlDoc.CreateElement("Field");

                    XmlNode nameNode = xmlDoc.CreateElement("Name");
                    nameNode.InnerText = column.ColumnName;

                    XmlNode typeNode = xmlDoc.CreateElement("Type");
                    typeNode.InnerText = column.DataType.Name;

                    colNode.AppendChild(nameNode);
                    colNode.AppendChild(typeNode);

                    listNode.AppendChild(colNode);
                }
                listNode.AppendChild(sheetNode);

                rootNode.AppendChild(listNode);
            }
            return(xmlDoc.InnerXml);
        }
Beispiel #2
0
        private void ShowStep(int step)
        {
            for (int i = 0; i <= _stepCount + 1; i++)
            {
                ((Panel)steps[i]).Visible = false;
            }
            ((Panel)steps[step - 1]).Visible = true;

            //if(step==1)
            //{
            //    pastStep.Value="1";
            //}

            #region step2
            if (step == 2)
            {
                if (pastStep.Value == "1" && fSourceFile.PostedFile != null && fSourceFile.PostedFile.ContentLength > 0)
                {
                    ProcessFileCache(Server.MapPath(CommonHelper.ChartPath));
                    String dir     = CommonHelper.ChartPath;
                    string wwwpath = dir + Guid.NewGuid().ToString();
                    switch (rbSourceType.SelectedValue)
                    {
                    case "0":
                        //wwwpath += ".xls";
                        // OZ: Added XLS and XLSX extensions
                        wwwpath += Path.GetExtension(fSourceFile.PostedFile.FileName);
                        break;

                    case "1":
                        wwwpath += ".xml";
                        break;

                    default:
                        break;
                    }
                    wwwPath.Value = wwwpath;
                    using (Stream sw = File.Create(Server.MapPath(wwwpath)))
                    {
                        fSourceFile.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);
                        System.IO.BinaryReader br = new System.IO.BinaryReader(fSourceFile.PostedFile.InputStream);
                        int    iBufferSize        = 655360;               // 640 KB
                        byte[] outbyte            = br.ReadBytes(iBufferSize);

                        while (outbyte.Length > 0)
                        {
                            sw.Write(outbyte, 0, outbyte.Length);
                            outbyte = br.ReadBytes(iBufferSize);
                        }
                        br.Close();
                    }

                    IIncomingDataParser parser  = null;
                    DataSet             rawData = null;
                    switch (rbSourceType.SelectedIndex)
                    {
                    case 0:
                        IMCOleDBHelper helper = (IMCOleDBHelper)Activator.GetObject(typeof(IMCOleDBHelper), ConfigurationManager.AppSettings["McOleDbServiceString"]);
                        rawData = helper.ConvertExcelToDataSet(Server.MapPath(wwwPath.Value));
                        break;

                    case 1:
                        parser  = new XmlIncomingDataParser();
                        rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                        break;
                    }

                    try
                    {
                        //rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                        DataTable dtSource = rawData.Tables[0];
                        DataTable dt       = new DataTable();
                        dt.Columns.Add(new DataColumn("SourceField", typeof(string)));
                        dt.Columns.Add(new DataColumn("IBNField", typeof(string)));
                        dt.Columns.Add(new DataColumn("realIBNFieldName", typeof(string)));
                        dt.Columns.Add(new DataColumn("IsIn", typeof(bool)));
                        DataRow          dr;
                        MappingMetaClass mc = null;
                        mc = new IncidentMappingMetaClass();
                        foreach (ColumnInfo ci in mc.ColumnInfos)
                        {
                            dr = dt.NewRow();
                            dr["SourceField"] = LocRM.GetString("imNotSet");
                            if (ci.Field.IsSystem)
                            {
                                dr["IBNField"]         = LocRM.GetString("tw" + ci.FieldName);
                                dr["realIBNFieldName"] = ci.FieldName;
                            }
                            else
                            {
                                dr["IBNField"]         = ci.FieldFriendlyName;
                                dr["realIBNFieldName"] = ci.FieldName;
                            }
                            dr["IsIn"] = true;
                            dt.Rows.Add(dr);
                        }

                        DataTable dtColumns = new DataTable();
                        dtColumns.Columns.Add(new DataColumn("SourceField", typeof(string)));
                        dtColumns.Columns.Add(new DataColumn("IsIn", typeof(bool)));
                        foreach (DataColumn dc in dtSource.Columns)
                        {
                            dr = dtColumns.NewRow();
                            dr["SourceField"] = dc.ColumnName;
                            dr["IsIn"]        = true;
                            dtColumns.Rows.Add(dr);
                        }
                        ViewState["Fields"]       = dt;
                        ViewState["SourceFields"] = dtColumns;
                        BindDG();
                    }
                    catch
                    {
                        step2.Visible = false;
                        step4.Visible = false;
                        step5.Visible = false;
                        step6.Visible = true;
                        ((WizardTemplate)Page.Controls[0]).btnNext.Visible = false;
                        ((WizardTemplate)Page.Controls[0]).btnBack.Visible = false;
                        lblFinalResult.Text = String.Format(LocRM.GetString("imErrorListText"),
                                                            String.Format("<a href='mailto:{0}'>{0}</a>", GlobalResourceManager.Strings["SupportEmail"]));
                        return;
                    }
                }
                ((WizardTemplate)Page.Controls[0]).btnNext.Disabled = false;
                if (ViewState["Fields"] != null)
                {
                    BindDG();
                }
                else
                {
                    ((WizardTemplate)Page.Controls[0]).btnNext.Disabled = true;
                    grdFields.DataSource = null;
                    grdFields.DataBind();
                }

                pastStep.Value = "2";
            }
            #endregion

            #region step3 - not Lists
            if (step == 3)
            {
                DataTable           dtFields = (DataTable)ViewState["Fields"];
                IIncomingDataParser parser   = null;
                DataSet             rawData  = null;
                switch (rbSourceType.SelectedIndex)
                {
                case 0:
                    IMCOleDBHelper helper = (IMCOleDBHelper)Activator.GetObject(typeof(IMCOleDBHelper), ConfigurationManager.AppSettings["McOleDbServiceString"]);
                    rawData = helper.ConvertExcelToDataSet(Server.MapPath(wwwPath.Value));
                    break;

                case 1:
                    parser  = new XmlIncomingDataParser();
                    rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                    break;
                }

                //DataSet rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                DataTable        dtSource = rawData.Tables[0];
                MappingMetaClass mc       = null;
                mc = new IncidentMappingMetaClass();
                MetaDataPlus.Import.Rule mapping = mc.CreateClassRule();
                DataTable dtColumns = (DataTable)ViewState["SourceFields"];
                foreach (DataRow dr in dtColumns.Rows)
                {
                    string     srcColumnName = dr["SourceField"].ToString();
                    DataColumn dc            = dtSource.Columns[srcColumnName];
                    DataRow[]  drF           = dtFields.Select("SourceField = '" + srcColumnName + "'");
                    if (drF.Length > 0)
                    {
                        string    realIBNField = drF[0]["realIBNFieldName"].ToString();
                        MetaField mf           = mc.GetColumnInfo(realIBNField).Field;
                        if (mf != null)
                        {
                            mapping.Add(new RuleItem(srcColumnName, dc.DataType, mf, FillTypes.CopyValue));
                        }
                    }
                    else
                    {
                        mapping.Add(new RuleItem(srcColumnName, dc.DataType));
                    }
                }

                try
                {
                    FillResult fr = null;
                    fr = ((IncidentMappingMetaClass)mc).FillData(FillDataMode.New, dtSource, mapping, 0);
                    if (fr.ErrorRows > 0)
                    {
                        string sText = String.Format(LocRM.GetString("imSomeErrors"), fr.SuccessfulRows.ToString(), fr.ErrorRows.ToString());
                        int    index = 0;
                        foreach (string sError in fr.Errors)
                        {
                            if ((++index) > 5)
                            {
                                break;
                            }
                            else
                            {
                                sText += "<br>&nbsp;&nbsp;<li>" + sError + "</li>";
                            }
                        }
                        lblFirstResult.Text = sText;
                    }
                    else
                    {
                        lblFirstResult.Text = String.Format(LocRM.GetString("imWasDone"), fr.SuccessfulRows.ToString());
                        lblFinalResult.Text = String.Format(LocRM.GetString("imWasDone"), fr.SuccessfulRows.ToString());
                        ((WizardTemplate)Page.Controls[0]).btnNext.Visible = false;
                        ((WizardTemplate)Page.Controls[0]).btnBack.Visible = false;
                        //Page.RegisterStartupScript("onfourthload","<script language='javascript'>"+
                        //"NextStep();"+
                        //"function NextStep(){var obj = document.getElementById('"+((WizardTemplate)Page.Controls[0]).btnNext.ClientID+"'); obj.click();}</script>");
                    }
                }
                catch (Exception ex)
                {
                    lblFirstResult.Text = LocRM.GetString("imSimpleError") + " " + ex.Message;
                }
                pastStep.Value = "3";
            }
            #endregion

            #region step4 - not Lists
            if (step == 4)
            {
                DataTable           dtFields = (DataTable)ViewState["Fields"];
                IIncomingDataParser parser   = null;
                DataSet             rawData  = null;
                switch (rbSourceType.SelectedIndex)
                {
                case 0:
                    IMCOleDBHelper helper = (IMCOleDBHelper)Activator.GetObject(typeof(IMCOleDBHelper), ConfigurationManager.AppSettings["McOleDbServiceString"]);
                    rawData = helper.ConvertExcelToDataSet(Server.MapPath(wwwPath.Value));
                    break;

                case 1:
                    parser  = new XmlIncomingDataParser();
                    rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                    break;
                }

                //DataSet rawData = parser.Parse(Server.MapPath(wwwPath.Value), null);
                DataTable        dtSource = rawData.Tables[0];
                MappingMetaClass mc       = null;
                mc = new IncidentMappingMetaClass();
                MetaDataPlus.Import.Rule mapping = mc.CreateClassRule();
                foreach (DataRow dr in dtFields.Rows)
                {
                    string     srcColumnName = dr["SourceField"].ToString();
                    DataColumn dc            = dtSource.Columns[srcColumnName];
                    string     realIBNField  = dr["realIBNFieldName"].ToString();
                    if (realIBNField.Length > 0)
                    {
                        MetaField mf = mc.GetColumnInfo(realIBNField).Field;
                        if (mf != null)
                        {
                            mapping.Add(new RuleItem(srcColumnName, dc.DataType, mf, FillTypes.CopyValue));
                        }
                    }
                    else
                    {
                        mapping.Add(new RuleItem(srcColumnName, dc.DataType));
                    }
                }

                try
                {
                    FillResult fr = null;
                    fr = ((IncidentMappingMetaClass)mc).FillData(FillDataMode.New, dtSource, mapping, -1);
                    lblFinalResult.Text = String.Format(LocRM.GetString("imWasDone"), fr.SuccessfulRows.ToString());
                }
                catch (Exception ex)
                {
                    lblFinalResult.Text = LocRM.GetString("imSimpleError") + " " + ex.Message;
                }
                pastStep.Value = "5";
            }
            #endregion
        }
Beispiel #3
0
        /// <summary>
        /// Handles the ActiveStepChanged event of the ucWizard control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        void ucWizard_ActiveStepChanged(object sender, EventArgs e)
        {
            //step1
            if (ucWizard.ActiveStep.ID == "step1")
            {
                ViewState["_ir"] = null;
            }

            //step2
            if (ucWizard.ActiveStep.ID == "step3")
            {
                #region upload file
                if (fSourceFile.PostedFile != null && fSourceFile.PostedFile.ContentLength > 0)
                {
                    ProcessFileCache(Server.MapPath(Mediachase.UI.Web.Util.CommonHelper.ChartPath));
                    String dir     = Mediachase.UI.Web.Util.CommonHelper.ChartPath;
                    string wwwpath = dir + Guid.NewGuid().ToString("N");
                    wwwpath += Path.GetExtension(fSourceFile.PostedFile.FileName);

                    hdnFilePath.Value = wwwpath;
                    using (Stream sw = File.Create(Server.MapPath(wwwpath)))
                    {
                        fSourceFile.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);
                        System.IO.BinaryReader br = new System.IO.BinaryReader(fSourceFile.PostedFile.InputStream);
                        int    iBufferSize        = 655360;               // 640 KB
                        byte[] outbyte            = br.ReadBytes(iBufferSize);

                        while (outbyte.Length > 0)
                        {
                            sw.Write(outbyte, 0, outbyte.Length);
                            outbyte = br.ReadBytes(iBufferSize);
                        }
                        br.Close();
                    }
                }
                #endregion

                divCSV.Visible = (rbSourceType.SelectedIndex == 2);

                #region file parsing
                IIncomingDataParser parser  = null;
                DataSet             rawData = null;
                try
                {
                    switch (rbSourceType.SelectedIndex)
                    {
                    case 0:
                        IMCOleDBHelper helper = (IMCOleDBHelper)Activator.GetObject(typeof(IMCOleDBHelper), ConfigurationManager.AppSettings["McOleDbServiceString"]);
                        rawData = helper.ConvertExcelToDataSet(Server.MapPath(hdnFilePath.Value));
                        break;

                    case 1:
                        parser  = new XmlIncomingDataParser();
                        rawData = parser.Parse(Server.MapPath(hdnFilePath.Value), null);
                        break;

                    case 2:
                        rawData = GetRawDataForCSV();
                        break;

                    case 3:
                        rawData = VCardUtil.ConvertFile(Server.MapPath(hdnFilePath.Value));
                        break;
                    }
                }
                catch (Exception ex)
                {
                    CHelper.GenerateErrorReport(ex);
                    ViewState["ServiceError"]  = true;
                    ViewState["ErrorFileName"] = Server.MapPath(hdnFilePath.Value);
                    ucWizard.MoveTo(this.step4);
                    return;
                }
                #endregion

                if (ViewState["_ir"] == null)
                {
                    InitializeMappingDocumentRequest  imdr = new InitializeMappingDocumentRequest(_className, rawData, 0);
                    InitializeMappingDocumentResponse resp = (InitializeMappingDocumentResponse)BusinessManager.Execute(imdr);
                    MappingDocument md = resp.MappingDocument;
                    _ir = new ImportRequest(_className, rawData, md);
                    ViewState["_ir"] = _ir;
                }
                BindDG();
            }

            if (ucWizard.ActiveStep.ID == "step4")
            {
                if (ViewState["ServiceError"] != null && (bool)ViewState["ServiceError"])
                {
                    string fileName = ViewState["ErrorFileName"].ToString();
                    if (fileName.EndsWith("xlsx") && !Is2007OfficeSystemDriverInstalled(fileName))
                    {
                        lblResult.Text = GetGlobalResourceObject("IbnFramework.Common", "McOleDbServiceWarningXlsx").ToString();
                    }
                    else
                    {
                        lblResult.Text = GetGlobalResourceObject("IbnFramework.Common", "McOleDbServiceWarning").ToString();
                    }
                }
                foreach (Control c in ucWizard.ActiveStep.Controls)
                {
                    if (c is Button)
                    {
                        Button btn   = (Button)c;
                        string param = String.Empty;
                        if (!String.IsNullOrEmpty(_commandName))
                        {
                            param = (new CommandParameters(_commandName)).ToString();
                        }
                        string script = Mediachase.Ibn.Web.UI.WebControls.CommandHandler.GetCloseOpenedFrameScript(this.Page, param);
                        script           += " return false;";
                        btn.OnClientClick = script;
                    }
                }
            }
        }