Gérer les Paragraphes PowerPoint en C#
Aspose.Slides fournit toutes les interfaces et classes nécessaires pour travailler avec des textes, des paragraphes et des portions PowerPoint en C#.
- Aspose.Slides fournit l’interface ITextFrame pour vous permettre d’ajouter des objets qui représentent un paragraphe. Un objet
ITextFame
peut contenir un ou plusieurs paragraphes (chaque paragraphe est créé par un retour à la ligne). - Aspose.Slides fournit l’interface IParagraph pour vous permettre d’ajouter des objets qui représentent des portions. Un objet
IParagraph
peut contenir un ou plusieurs portions (collection d’objets iPortions). - Aspose.Slides fournit l’interface IPortion pour vous permettre d’ajouter des objets qui représentent des textes et leurs propriétés de formatage.
Un objet IParagraph
est capable de gérer des textes avec différentes propriétés de formatage via ses objets IPortion
sous-jacents.
Ajouter Plusieurs Paragraphes Contenant Plusieurs Portions
Ces étapes vous montrent comment ajouter un cadre de texte contenant 3 paragraphes, chaque paragraphe contenant 3 portions :
- Créez une instance de la classe Presentation.
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez un Rectangle IAutoShape à la diapositive.
- Obtenez le ITextFrame associé à IAutoShape.
- Créez deux objets IParagraph et ajoutez-les à la collection
IParagraphs
de ITextFrame. - Créez trois objets IPortion pour chaque nouveau
IParagraph
(deux objets Portion pour le paragraphe par défaut) et ajoutez chaque objetIPortion
à la collection IPortion de chaqueIParagraph
. - Définissez du texte pour chaque portion.
- Appliquez vos fonctionnalités de formatage préférées à chaque portion à l’aide des propriétés de formatage exposées par l’objet
IPortion
. - Enregistrez la présentation modifiée.
Ce code C# est une implémentation des étapes d’ajout de paragraphes contenant des portions :
// Instantiates a Presentation class that represents a PPTX file
using (Presentation pres = new Presentation())
{
// Accesses the first slide
ISlide slide = pres.Slides[0];
// Adds a Rectangle IAutoShape
IAutoShape ashp = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 150, 300, 150);
// Accesses the AutoShape TextFrame
ITextFrame tf = ashp.TextFrame;
// Creates Paragraphs and Portions with different text formats
IParagraph para0 = tf.Paragraphs[0];
IPortion port01 = new Portion();
IPortion port02 = new Portion();
para0.Portions.Add(port01);
para0.Portions.Add(port02);
IParagraph para1 = new Paragraph();
tf.Paragraphs.Add(para1);
IPortion port10 = new Portion();
IPortion port11 = new Portion();
IPortion port12 = new Portion();
para1.Portions.Add(port10);
para1.Portions.Add(port11);
para1.Portions.Add(port12);
IParagraph para2 = new Paragraph();
tf.Paragraphs.Add(para2);
IPortion port20 = new Portion();
IPortion port21 = new Portion();
IPortion port22 = new Portion();
para2.Portions.Add(port20);
para2.Portions.Add(port21);
para2.Portions.Add(port22);
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
tf.Paragraphs[i].Portions[j].Text = "Portion0" + j.ToString();
if (j == 0)
{
tf.Paragraphs[i].Portions[j].PortionFormat.FillFormat.FillType = FillType.Solid;
tf.Paragraphs[i].Portions[j].PortionFormat.FillFormat.SolidFillColor.Color = Color.Red;
tf.Paragraphs[i].Portions[j].PortionFormat.FontBold = NullableBool.True;
tf.Paragraphs[i].Portions[j].PortionFormat.FontHeight = 15;
}
else if (j == 1)
{
tf.Paragraphs[i].Portions[j].PortionFormat.FillFormat.FillType = FillType.Solid;
tf.Paragraphs[i].Portions[j].PortionFormat.FillFormat.SolidFillColor.Color = Color.Blue;
tf.Paragraphs[i].Portions[j].PortionFormat.FontItalic = NullableBool.True;
tf.Paragraphs[i].Portions[j].PortionFormat.FontHeight = 18;
}
}
// Saves the modified presentation
pres.Save("multiParaPort_out.pptx", SaveFormat.Pptx);
Gérer les Puces de Paragraphe
Les listes à puces vous aident à organiser et présenter les informations rapidement et efficacement. Les paragraphes à puces sont toujours plus faciles à lire et à comprendre.
- Créez une instance de la classe Presentation.
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez une autoshape à la diapositive sélectionnée.
- Accédez au TextFrame de l’autoshape.
- Supprimez le paragraphe par défaut dans le
TextFrame
. - Créez la première instance de paragraphe à l’aide de la classe Paragraph.
- Définissez le
Type
de puce pour le paragraphe surSymbol
et définissez le caractère de puce. - Définissez le
Text
du paragraphe. - Définissez le
Indent
du paragraphe pour la puce. - Définissez une couleur pour la puce.
- Définissez une hauteur pour la puce.
- Ajoutez le nouveau paragraphe à la collection de paragraphes du
TextFrame
. - Ajoutez le deuxième paragraphe et répétez le processus décrit dans les étapes 7 à 13.
- Enregistrez la présentation.
Ce code C# vous montre comment ajouter une puce de paragraphe :
// Instantiates a Presentation class that represents a PPTX file
using (Presentation pres = new Presentation())
{
// Accesses the first slide
ISlide slide = pres.Slides[0];
// Adds and accesses Autoshape
IAutoShape aShp = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Accesses the autoshape text frame
ITextFrame txtFrm = aShp.TextFrame;
// Removes the default paragraph
txtFrm.Paragraphs.RemoveAt(0);
// Creates a paragraph
Paragraph para = new Paragraph();
// Sets a paragraph bullet style and symbol
para.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
// Sets a paragraph text
para.Text = "Bienvenue dans Aspose.Slides";
// Sets bullet indent
para.ParagraphFormat.Indent = 25;
// Sets bullet color
para.ParagraphFormat.Bullet.Color.ColorType = ColorType.RGB;
para.ParagraphFormat.Bullet.Color.Color = Color.Black;
para.ParagraphFormat.Bullet.IsBulletHardColor = NullableBool.True; // set IsBulletHardColor to true to use own bullet color
// Sets Bullet Height
para.ParagraphFormat.Bullet.Height = 100;
// Adds Paragraph to text frame
txtFrm.Paragraphs.Add(para);
// Creates second paragraph
Paragraph para2 = new Paragraph();
// Sets paragraph bullet type and style
para2.ParagraphFormat.Bullet.Type = BulletType.Numbered;
para2.ParagraphFormat.Bullet.NumberedBulletStyle = NumberedBulletStyle.BulletCircleNumWDBlackPlain;
// Adds paragraph text
para2.Text = "C'est une puce numérotée";
// Sets bullet indent
para2.ParagraphFormat.Indent = 25;
para2.ParagraphFormat.Bullet.Color.ColorType = ColorType.RGB;
para2.ParagraphFormat.Bullet.Color.Color = Color.Black;
para2.ParagraphFormat.Bullet.IsBulletHardColor = NullableBool.True; // set IsBulletHardColor to true to use own bullet color
// Sets Bullet Height
para2.ParagraphFormat.Bullet.Height = 100;
// Adds Paragraph to text frame
txtFrm.Paragraphs.Add(para2);
// Saves the modified presentation
pres.Save("Bullet_out.pptx", SaveFormat.Pptx);
}
Gérer les Puces d’Image
Les listes à puces vous aident à organiser et présenter les informations rapidement et efficacement. Les paragraphes d’image sont faciles à lire et à comprendre.
- Créez une instance de la classe Presentation.
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez une autoshape à la diapositive.
- Accédez au TextFrame de l’autoshape.
- Supprimez le paragraphe par défaut dans le
TextFrame
. - Créez la première instance de paragraphe à l’aide de la classe Paragraph.
- Chargez l’image dans IPPImage.
- Définissez le type de puce sur Picture et définissez l’image.
- Définissez le
Text
du paragraphe. - Définissez le
Indent
du paragraphe pour la puce. - Définissez une couleur pour la puce.
- Définissez une hauteur pour la puce.
- Ajoutez le nouveau paragraphe à la collection de paragraphes du
TextFrame
. - Ajoutez le deuxième paragraphe et répétez le processus basé sur les étapes précédentes.
- Enregistrez la présentation modifiée.
Ce code C# vous montre comment ajouter et gérer des puces d’image :
// Instantiates a Presentation class that represents a PPTX file
Presentation presentation = new Presentation();
// Accesses the first slide
ISlide slide = presentation.Slides[0];
// Instantiates the image for bullets
IImage image = Images.FromFile("bullets.png");
IPPImage ippxImage = presentation.Images.AddImage(image);
image.Dispose();
// Adds and accesses Autoshape
IAutoShape autoShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Accesses the autoshape textframe
ITextFrame textFrame = autoShape.TextFrame;
// Removes the default paragraph
textFrame.Paragraphs.RemoveAt(0);
// Creates a new paragraph
Paragraph paragraph = new Paragraph();
paragraph.Text = "Bienvenue dans Aspose.Slides";
// Sets paragraph bullet style and image
paragraph.ParagraphFormat.Bullet.Type = BulletType.Picture;
paragraph.ParagraphFormat.Bullet.Picture.Image = ippxImage;
// Sets bullet Height
paragraph.ParagraphFormat.Bullet.Height = 100;
// Adds paragraph to text frame
textFrame.Paragraphs.Add(paragraph);
// Writes the presentation as a PPTX file
presentation.Save("ParagraphPictureBulletsPPTX_out.pptx", SaveFormat.Pptx);
// Writes the presentation as a PPT file
presentation.Save("ParagraphPictureBulletsPPT_out.ppt", SaveFormat.Ppt);
Gérer les Puces Multiniveaux
Les listes à puces vous aident à organiser et présenter les informations rapidement et efficacement. Les puces multiniveaux sont faciles à lire et à comprendre.
- Créez une instance de la classe Presentation .
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez une autoshape dans la nouvelle diapositive.
- Accédez au TextFrame de l’autoshape.
- Supprimez le paragraphe par défaut dans le
TextFrame
. - Créez la première instance de paragraphe via la classe Paragraph et définissez la profondeur à 0.
- Créez la deuxième instance de paragraphe via la classe
Paragraph
et définissez la profondeur à 1. - Créez la troisième instance de paragraphe via la classe
Paragraph
et définissez la profondeur à 2. - Créez la quatrième instance de paragraphe via la classe
Paragraph
et définissez la profondeur à 3. - Ajoutez les nouveaux paragraphes à la collection de paragraphes du
TextFrame
. - Enregistrez la présentation modifiée.
Ce code C# vous montre comment ajouter et gérer des puces multiniveaux :
// Instantiates a Presentation class that represents a PPTX file
using (Presentation pres = new Presentation())
{
// Accesses the first slide
ISlide slide = pres.Slides[0];
// Adds and accesses Autoshape
IAutoShape aShp = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Accesses the text frame of created autoshape
ITextFrame text = aShp.AddTextFrame("");
// Clears the default paragraph
text.Paragraphs.Clear();
// Adds the first paragraph
IParagraph para1 = new Paragraph();
para1.Text = "Contenu";
para1.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para1.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
para1.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
para1.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// Sets the bullet level
para1.ParagraphFormat.Depth = 0;
// Adds the second paragraph
IParagraph para2 = new Paragraph();
para2.Text = "Deuxième niveau";
para2.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para2.ParagraphFormat.Bullet.Char = '-';
para2.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
para2.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// Sets the bullet level
para2.ParagraphFormat.Depth = 1;
// Adds the third paragraph
IParagraph para3 = new Paragraph();
para3.Text = "Troisième niveau";
para3.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para3.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
para3.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
para3.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// Sets the bullet level
para3.ParagraphFormat.Depth = 2;
// Adds the fourth paragraph
IParagraph para4 = new Paragraph();
para4.Text = "Quatrième niveau";
para4.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para4.ParagraphFormat.Bullet.Char = '-';
para4.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
para4.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// Sets the bullet level
para4.ParagraphFormat.Depth = 3;
// Adds paragraphs to collection
text.Paragraphs.Add(para1);
text.Paragraphs.Add(para2);
text.Paragraphs.Add(para3);
text.Paragraphs.Add(para4);
// Writes the presentation as a PPTX file
pres.Save("MultilevelBullet.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Gérer les Paragraphes avec Liste Numérotée Personnalisée
L’interface IBulletFormat fournit la propriété NumberedBulletStartWith et d’autres qui vous permettent de gérer des paragraphes avec un numéro ou un formatage personnalisé.
- Créez une instance de la classe Presentation .
- Accédez à la diapositive contenant le paragraphe.
- Ajoutez une autoshape à la diapositive.
- Accédez au TextFrame de l’autoshape.
- Supprimez le paragraphe par défaut dans le
TextFrame
. - Créez la première instance de paragraphe via la classe Paragraph et définissez NumberedBulletStartWith sur 2.
- Créez la deuxième instance de paragraphe via la classe
Paragraph
et définissezNumberedBulletStartWith
sur 3. - Créez la troisième instance de paragraphe via la classe
Paragraph
et définissezNumberedBulletStartWith
sur 7. - Ajoutez les nouveaux paragraphes à la collection de paragraphes du
TextFrame
. - Enregistrez la présentation modifiée.
Ce code C# vous montre comment ajouter et gérer des paragraphes avec un numéro ou un formatage personnalisé :
using (var presentation = new Presentation())
{
var shape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Accesses the text frame of created autoshape
ITextFrame textFrame = shape.TextFrame;
// Removes the default exisiting paragraph
textFrame.Paragraphs.RemoveAt(0);
// First list
var paragraph1 = new Paragraph { Text = "puce 2" };
paragraph1.ParagraphFormat.Depth = 4;
paragraph1.ParagraphFormat.Bullet.NumberedBulletStartWith = 2;
paragraph1.ParagraphFormat.Bullet.Type = BulletType.Numbered;
textFrame.Paragraphs.Add(paragraph1);
var paragraph2 = new Paragraph { Text = "puce 3" };
paragraph2.ParagraphFormat.Depth = 4;
paragraph2.ParagraphFormat.Bullet.NumberedBulletStartWith = 3;
paragraph2.ParagraphFormat.Bullet.Type = BulletType.Numbered;
textFrame.Paragraphs.Add(paragraph2);
var paragraph5 = new Paragraph { Text = "puce 7" };
paragraph5.ParagraphFormat.Depth = 4;
paragraph5.ParagraphFormat.Bullet.NumberedBulletStartWith = 7;
paragraph5.ParagraphFormat.Bullet.Type = BulletType.Numbered;
textFrame.Paragraphs.Add(paragraph5);
presentation.Save("SetCustomBulletsNumber-slides.pptx", SaveFormat.Pptx);
}
Définir le Retrait de Paragraphe
- Créez une instance de la classe Presentation.
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez une rectangle autoshape à la diapositive.
- Ajoutez un TextFrame avec trois paragraphes à l’autoshape rectangle.
- Masquez les lignes du rectangle.
- Définissez le retrait pour chaque Paragraph via leur propriété BulletOffset.
- Écrivez la présentation modifiée sous forme de fichier PPT.
Ce code C# vous montre comment définir un retrait de paragraphe :
// Instantiate Presentation Class
Presentation pres = new Presentation();
// Gets the first slide
ISlide sld = pres.Slides[0];
// Adds a Rectangle Shape
IAutoShape rect = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 500, 150);
// Adds TextFrame to the Rectangle
ITextFrame tf = rect.AddTextFrame("Ceci est la première ligne \rCeci est la deuxième ligne \rCeci est la troisième ligne");
// Sets the text to fit the shape
tf.TextFrameFormat.AutofitType = TextAutofitType.Shape;
// Hides the lines of the Rectangle
rect.LineFormat.FillFormat.FillType = FillType.Solid;
// Gets the first Paragraph in the TextFrame and set its Indent
IParagraph para1 = tf.Paragraphs[0];
// Sets paragraph bullet style and symbol
para1.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para1.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
para1.ParagraphFormat.Alignment = TextAlignment.Left;
para1.ParagraphFormat.Depth = 2;
para1.ParagraphFormat.Indent = 30;
// Gets second Paragraph in the TextFrame and set its Indent
IParagraph para2 = tf.Paragraphs[1];
para2.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para2.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
para2.ParagraphFormat.Alignment = TextAlignment.Left;
para2.ParagraphFormat.Depth = 2;
para2.ParagraphFormat.Indent = 40;
// Gets third Paragraph in the TextFrame and sets its Indent
IParagraph para3 = tf.Paragraphs[2];
para3.ParagraphFormat.Bullet.Type = BulletType.Symbol;
para3.ParagraphFormat.Bullet.Char = Convert.ToChar(8226);
para3.ParagraphFormat.Alignment = TextAlignment.Left;
para3.ParagraphFormat.Depth = 2;
para3.ParagraphFormat.Indent = 50;
// Writes the Presentation to disk
pres.Save("InOutDent_out.pptx", SaveFormat.Pptx);
Définir un Retrait Suspendu pour le Paragraphe
Ce code C# vous montre comment définir le retrait suspendu pour un paragraphe :
using (Presentation pres = new Presentation())
{
var autoShape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 50, 250, 550, 150);
Paragraph para1 = new Paragraph
{
Text = "Exemple"
};
Paragraph para2 = new Paragraph
{
Text = "Définir un retrait suspendu pour le paragraphe"
};
Paragraph para3 = new Paragraph
{
Text = "Ce code C# vous montre comment définir le retrait suspendu pour un paragraphe : "
};
para2.ParagraphFormat.MarginLeft = 10f;
para3.ParagraphFormat.MarginLeft = 20f;
autoShape.TextFrame.Paragraphs.Add(para1);
autoShape.TextFrame.Paragraphs.Add(para2);
autoShape.TextFrame.Paragraphs.Add(para3);
pres.Save("pres.pptx", SaveFormat.Pptx);
}
Gérer les Propriétés de Fin de Paragraphe pour le Paragraphe
- Créez une instance de la classe Presentation.
- Obtenez la référence de la diapositive contenant le paragraphe via sa position.
- Ajoutez une rectangle autoshape à la diapositive.
- Ajoutez un TextFrame avec deux paragraphes au Rectangle.
- Définissez la
FontHeight
et le type de police pour les paragraphes. - Définissez les propriétés de fin pour les paragraphes.
- Écrivez la présentation modifiée sous forme de fichier PPTX.
Ce code C# vous montre comment définir les propriétés de fin pour les paragraphes dans PowerPoint :
using (Presentation pres = new Presentation("Test.pptx"))
{
IAutoShape shape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, 200, 250);
Paragraph para1 = new Paragraph();
para1.Portions.Add(new Portion("Texte d'exemple"));
Paragraph para2 = new Paragraph();
para2.Portions.Add(new Portion("Texte d'exemple 2"));
PortionFormat endParagraphPortionFormat = new PortionFormat();
endParagraphPortionFormat.FontHeight = 48;
endParagraphPortionFormat.LatinFont = new FontData("Times New Roman");
para2.EndParagraphPortionFormat = endParagraphPortionFormat;
shape.TextFrame.Paragraphs.Add(para1);
shape.TextFrame.Paragraphs.Add(para2);
pres.Save("pres.pptx", SaveFormat.Pptx);
}
Importer du Texte HTML dans des Paragraphes
Aspose.Slides offre un support amélioré pour importer du texte HTML dans des paragraphes.
- Créez une instance de la classe Presentation.
- Accédez à la référence de la diapositive pertinente via son index.
- Ajoutez une autoshape à la diapositive.
- Ajoutez et accédez à
autoshape
ITextFrame. - Supprimez le paragraphe par défaut dans le
ITextFrame
. - Lisez le fichier HTML source dans un TextReader.
- Créez la première instance de paragraphe via la classe Paragraph.
- Ajoutez le contenu du fichier HTML dans le TextReader lu à la ParagraphCollection du TextFrame.
- Enregistrez la présentation modifiée.
Ce code C# est une implémentation des étapes pour importer des textes HTML dans des paragraphes :
// Creates Empty presentation instance
using (Presentation pres = new Presentation())
{
// Acessses the default first slide of presentation
ISlide slide = pres.Slides[0];
// Adds the AutoShape to house the HTML content
IAutoShape ashape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 10, 10, pres.SlideSize.Size.Width - 20, pres.SlideSize.Size.Height - 10);
ashape.FillFormat.FillType = FillType.NoFill;
// Adds text frame to the shape
ashape.AddTextFrame("");
// Clears all paragraphs in the added text frame
ashape.TextFrame.Paragraphs.Clear();
// Loads the HTML file using stream reader
TextReader tr = new StreamReader("file.html");
// Adds the text from HTML stream reader in text frame
ashape.TextFrame.Paragraphs.AddFromHtml(tr.ReadToEnd());
// Saves Presentation
pres.Save("output_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Exporter le Texte des Paragraphes vers HTML
Aspose.Slides offre un support amélioré pour exporter des textes (contenus dans les paragraphes) vers HTML.
- Créez une instance de la classe Presentation et chargez la présentation souhaitée.
- Accédez à la référence de la diapositive pertinente via son index.
- Accédez à la forme contenant le texte qui sera exporté vers HTML.
- Accédez au TextFrame de la forme.
- Créez une instance de
StreamWriter
et ajoutez le nouveau fichier HTML. - Fournissez un index de départ au StreamWriter et exportez vos paragraphes préférés.
Ce code C# vous montre comment exporter le texte des paragraphes PowerPoint vers HTML :
// Loads the presentation file
using (Presentation pres = new Presentation("ExportingHTMLText.pptx"))
{
// Acessses the default first slide of presentation
ISlide slide = pres.Slides[0];
// Accesses the required index
int index = 0;
// Accesses the added shape
IAutoShape ashape = (IAutoShape)slide.Shapes[index];
StreamWriter sw = new StreamWriter("output_out.html", false, Encoding.UTF8);
// Writes paragraphs data to HTML by specifying paragraph starting index and number of paragraphs to be copied
sw.Write(ashape.TextFrame.Paragraphs.ExportToHtml(0, ashape.TextFrame.Paragraphs.Count, null));
sw.Close();
}