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); }
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> <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 }
/// <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; } } } }