using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Datalib.DatabaseSpecific; using Datalib.EntityClasses; using Datalib.FactoryClasses; using Datalib.HelperClasses; using System.IO; using Datalib.Linq; using System.Linq; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Validation; using OpenXmlPowerTools; using System.Xml.Linq; namespace Omega.Forms { public partial class frmQuestionImport : Omega.BasicForms.frmCommon { public string filename { get; set; } public frmQuestionImport() { InitializeComponent(); } private void SaveToDB_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { string source = this.filename; List sources = new List(); WmlDocument InputDoc = new WmlDocument(source); OpenXmlMemoryStreamDocument InputStream = new OpenXmlMemoryStreamDocument(InputDoc); WordprocessingDocument InputwDoc = InputStream.GetWordprocessingDocument(); XDocument InputxDoc = InputwDoc.MainDocumentPart.GetXDocument(); List tbls = InputxDoc.Descendants(W.tbl).Where(m => m.Parent.Name.ToString().Contains("body")).ToList(); List quesions = new List(); this.progressPanel.Visible = true; foreach( var tbl in tbls) { string QuestionID = Guid.NewGuid().ToString("N"); string SubjectID = ""; string Level = ""; string Difficulty = ""; string FieldID = ""; string QuestionCode = ""; TblQuestionEntity question = new TblQuestionEntity(QuestionID); question.QuestionId = QuestionID; question.CreateDate = DateTime.Today; // Get Question Content var CellContent = tbl.Elements(W.tr).ToList()[0].Elements(W.tc).FirstOrDefault().Elements().Where(ce => ce.Name != W.tcPr).ToList(); var Summary = tbl.Elements(W.tr).ToList()[0].Elements(W.tc).FirstOrDefault().Value.ToString(); // MessageBox.Show(Summary); WmlDocument modify = new WmlDocument(InputDoc); OpenXmlMemoryStreamDocument modifystream = new OpenXmlMemoryStreamDocument(modify); WordprocessingDocument modifywDoc = modifystream.GetWordprocessingDocument(); XDocument modifyxDoc = modifywDoc.MainDocumentPart.GetXDocument(); modifyxDoc.Descendants(W.body).First().ReplaceNodes(CellContent); modifywDoc.MainDocumentPart.PutXDocument(); sources.Clear(); sources.Add(new Source(modifystream.GetModifiedWmlDocument(), true)); WmlDocument finalDocument = DocumentBuilder.BuildDocument(sources); string base64 = Convert.ToBase64String(finalDocument.DocumentByteArray); byte[] bytes = Convert.FromBase64String(base64); question.Content = base64; question.Summary = Summary; //Get Content of Answer CellContent = tbl.Elements(W.tr).ToList()[1].Elements(W.tc).FirstOrDefault().Elements().Where(ce => ce.Name != W.tcPr).ToList(); modify = new WmlDocument(InputDoc); modifystream = new OpenXmlMemoryStreamDocument(modify); modifywDoc = modifystream.GetWordprocessingDocument(); modifyxDoc = modifywDoc.MainDocumentPart.GetXDocument(); modifyxDoc.Descendants(W.body).First().ReplaceNodes(CellContent); modifywDoc.MainDocumentPart.PutXDocument(); sources.Clear(); sources.Add(new Source(modifystream.GetModifiedWmlDocument(), true)); finalDocument = DocumentBuilder.BuildDocument(sources); base64 = Convert.ToBase64String(finalDocument.DocumentByteArray); bytes = Convert.FromBase64String(base64); question.Answer = base64; //Get Content of Explaination CellContent = tbl.Elements(W.tr).ToList()[2].Elements(W.tc).FirstOrDefault().Elements().Where(ce => ce.Name != W.tcPr).ToList(); modify = new WmlDocument(InputDoc); modifystream = new OpenXmlMemoryStreamDocument(modify); modifywDoc = modifystream.GetWordprocessingDocument(); modifyxDoc = modifywDoc.MainDocumentPart.GetXDocument(); modifyxDoc.Descendants(W.body).First().ReplaceNodes(CellContent); modifywDoc.MainDocumentPart.PutXDocument(); sources.Clear(); sources.Add(new Source(modifystream.GetModifiedWmlDocument(), true)); finalDocument = DocumentBuilder.BuildDocument(sources); base64 = Convert.ToBase64String(finalDocument.DocumentByteArray); bytes = Convert.FromBase64String(base64); question.Explaination = base64; //Get Content of Subject ID, Level, Field .... string Code = tbl.Elements(W.tr).ToList()[3].Elements(W.tc).FirstOrDefault().Value.ToString(); string[] Codes = Code.Split(new char[] { ';' }); QuestionCode = Codes[0].Split(new char[] { '=' })[1]; SubjectID = Codes[1].Split(new char[]{'='})[1]; FieldID = (Codes[2].Split(new char[] { '=' })[1]); Level = (Codes[3].Split(new char[] { '=' })[1]); Difficulty = (Codes[4].Split(new char[] { '=' })[1]); question.SubjectId= SubjectID.Trim(); question.FieldId = FieldID.Trim(); question.Level = Level.Trim(); question.Difficulty = Difficulty.Trim(); question.QuestionCode = QuestionCode.Trim(); adapter.SaveEntity(question,true,true); quesions.Add(question); } grdResult.DataSource = quesions; this.Tabs.SelectedTabPageIndex = 1; this.progressPanel.Visible = false; } private void Open_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { this.filename = openFileDialog.FileName; byte[] buff = File.ReadAllBytes(filename); this.richEditControl.OpenXmlBytes = buff; } } } }