147 lines
6.6 KiB
C#
147 lines
6.6 KiB
C#
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<Source> sources = new List<Source>();
|
|
|
|
WmlDocument InputDoc = new WmlDocument(source);
|
|
|
|
OpenXmlMemoryStreamDocument InputStream = new OpenXmlMemoryStreamDocument(InputDoc);
|
|
WordprocessingDocument InputwDoc = InputStream.GetWordprocessingDocument();
|
|
XDocument InputxDoc = InputwDoc.MainDocumentPart.GetXDocument();
|
|
List<XElement> tbls = InputxDoc.Descendants(W.tbl).Where(m => m.Parent.Name.ToString().Contains("body")).ToList();
|
|
List<TblQuestionEntity> quesions = new List<TblQuestionEntity>();
|
|
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;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|