Hi BugHunter,
Refer below code.
Namespaces
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using A = DocumentFormat.OpenXml.Drawing;
Controller
public class HomeController : Controller
{
// GET: /Home/
public ActionResult Index()
{
StringBuilder sb = new StringBuilder();
string file = Server.MapPath("~/Files/Test.pptx");
int numberOfSlides = CountSlides(file);
string slideText;
for (int i = 0; i < numberOfSlides; i++)
{
// Get slide text.
GetSlideIdAndText(out slideText, file, i);
sb.Append(slideText);
}
// Insert into database table.
InsertSlideText(HttpUtility.UrlEncode(sb.ToString()));
return View();
}
private void InsertSlideText(string text)
{
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
string query = "INSERT INTO tblSlides (SlideText) VALUES(@Text)";
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@Text", text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
public static int CountSlides(string presentationFile)
{
// Open the presentation as read-only.
using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
{
// Pass the presentation to the next CountSlides method and return the slide count.
return CountSlides(presentationDocument);
}
}
public static int CountSlides(PresentationDocument presentationDocument)
{
// Check for a null document object.
if (presentationDocument == null)
{
throw new ArgumentNullException("presentationDocument");
}
int slidesCount = 0;
// Get the presentation part of document.
PresentationPart presentationPart = presentationDocument.PresentationPart;
// Get the slide count from the SlideParts.
if (presentationPart != null)
{
slidesCount = presentationPart.SlideParts.Count();
}
// Return the slide count to the previous method.
return slidesCount;
}
public static void GetSlideIdAndText(out string slideText, string docName, int index)
{
using (PresentationDocument ppt = PresentationDocument.Open(docName, false))
{
PresentationPart part = ppt.PresentationPart;
OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements;
string relId = (slideIds[index] as SlideId).RelationshipId;
SlidePart slide = (SlidePart)part.GetPartById(relId);
StringBuilder paragraphText = new StringBuilder();
// Get the inner text of the slide:
IEnumerable<A.Text> texts = slide.Slide.Descendants<A.Text>();
foreach (A.Text text in texts)
{
paragraphText.Append(text.Text);
}
slideText = paragraphText.ToString();
}
}
}