Hi RPA,
HTML
<div>
<asp:Button ID="btnImport" runat="server" Text="Import" OnClick="Import" />
<br />
<br />
<asp:GridView ID="gvQuestions" runat="server" AutoGenerateColumns="true" />
<br />
<asp:Button ID="btnPng" Text="ConvertToPNG" runat="server" OnClick="Convertpng" />
<asp:Label ID="lblConvert" Text="" runat="server" />
</div>
C#
private string constr = ConfigurationManager.ConnectionStrings["Constr"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
}
}
protected void Import(object sender, EventArgs e)
{
Application word = new Application();
Document doc = new Document();
string filePath = Server.MapPath("~/Files/Test.docx");
object missing = System.Type.Missing;
object fileName = filePath;
doc = word.Documents.Open(ref fileName,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
String read = string.Empty;
List<string> data = new List<string>();
for (int i = 0; i < doc.Paragraphs.Count; i++)
{
string temp = doc.Paragraphs[i + 1].Range.Text.Trim();
if (temp != string.Empty)
data.Add(temp);
}
doc.Close(ref missing, ref missing, ref missing);
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.AddRange(new System.Data.DataColumn[] {
new System.Data.DataColumn("Id",typeof(int)),
new System.Data.DataColumn("Question"),
new System.Data.DataColumn("Answer1"),
new System.Data.DataColumn("Answer2"),
new System.Data.DataColumn("Answer3"),
new System.Data.DataColumn("Answer4"),
new System.Data.DataColumn("CorrectAnswer")
});
int totalQuestionCount = 0;
int rowNo = 1;
System.Data.DataRow dr = dt.NewRow();
for (int i = 0; i < data.Count; i++)
{
string type = string.Empty;
if (data[i].Contains("$") || data[i].Contains("©"))
{
type = "option";
if (i != 0)
{
if ((!data[i - 1].Contains("@")))
{
type = "new line option";
}
}
}
else
{
type = "question";
}
int optionCount = 2;
switch (type)
{
case "question":
dr[0] = rowNo;
dr[1] = data[i].Replace("@", "").Trim();
rowNo++;
break;
case "option":
foreach (string option in data[i].Split(';'))
{
if (!string.IsNullOrEmpty(option))
{
if (option.Contains("$"))
{
dr[optionCount] = option.Replace("$", "").Trim();
}
else if (option.Contains("©"))
{
//* Option*//
dr[optionCount] = option.Replace("©", "").Trim();
dr[6] = option.Split(')')[1].Trim();
}
optionCount++;
}
}
break;
case "new line option":
foreach (string option in data[i].Split(';'))
{
if (!string.IsNullOrEmpty(option))
{
int colIndex = 0;
if (option.Contains("$A") || option.Contains("©A"))
{
colIndex = 2;
}
if (option.Contains("$B") || option.Contains("©B"))
{
colIndex = 3;
}
if (option.Contains("$C") || option.Contains("©C"))
{
colIndex = 4;
}
if (option.Contains("$D") || option.Contains("©D"))
{
colIndex = 5;
}
dt.Rows[dt.Rows.Count - 1][colIndex] = option.Replace("$", "").Trim();
if (option.Contains("©"))
{
dt.Rows[dt.Rows.Count - 1][colIndex] = option.Replace("©", "").Trim();
dt.Rows[dt.Rows.Count - 1][6] = option.Split(')')[1].Trim();
}
}
}
break;
}
if (i != 0 && data[i - 1].Contains("@"))
{
dt.Rows.Add(dr);
totalQuestionCount++;
dr = dt.NewRow();
}
}
((_Application)word).Quit();
gvQuestions.DataSource = dt;
gvQuestions.DataBind();
}
protected void Convertpng(object sender, EventArgs e)
{
int Qid = 0;
foreach (GridViewRow row in gvQuestions.Rows)
{
Qid++;
string all = string.Empty;
for (int i = 1; i < row.Cells.Count; i++)
{
string question = row.Cells[i].Text;
string fullQA = question;
Bitmap bitmap = new Bitmap(1, 1);
System.Drawing.Font font = new System.Drawing.Font("Arial", 25, FontStyle.Regular, GraphicsUnit.Pixel);
Graphics graphics = Graphics.FromImage(bitmap);
int width = (int)graphics.MeasureString(fullQA, font).Width;
int height = (int)graphics.MeasureString(fullQA, font).Height;
bitmap = new Bitmap(bitmap, new Size(width, height));
graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
graphics.DrawString(fullQA, font, new SolidBrush(Color.FromArgb(255, 0, 0)), 0, 0);
graphics.Flush();
graphics.Dispose();
string fileName;
if (i == 1)
{
fileName = Path.GetFileNameWithoutExtension("Qs" + Qid) + ".png";
}
else
{
int id = i - 1;
fileName = Path.GetFileNameWithoutExtension(+Qid + "a" + id) + ".png";
}
bitmap.Save(Server.MapPath("~/Files/") + fileName, ImageFormat.Png);
all += fileName + ",";
}
InsertData(all);
}
lblConvert.Text = "Done";
}
private void InsertData(string all)
{
string[] values = all.Split(',');
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("INSERT INTO Question Values(@Question,@Answer1,@Answer2,@Answer3,@Answer4,@CorrectAnswer)", con);
cmd.Parameters.AddWithValue("@Question", values[0]);
cmd.Parameters.AddWithValue("@Answer1", values[1]);
cmd.Parameters.AddWithValue("@Answer2", values[2]);
cmd.Parameters.AddWithValue("@Answer3", values[3]);
cmd.Parameters.AddWithValue("@Answer4", values[4]);
cmd.Parameters.AddWithValue("@CorrectAnswer", values[5]);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Screenshot

I hope works for you.