c# - 未检测到 Powerpoint 形状中的 C# 文本
问题描述
我正在尝试提取 powerpoint 文件的每张幻灯片中的所有文本。出于某种原因,我只收到一些文本,而不是全部。我正在遍历幻灯片中的所有形状并检查文本框和表格。但是一些带有文本的幻灯片不会打印出任何内容。
代码
foreach (PowerPoint.Slide _slide in pptPresentation.Slides) {
foreach(PowerPoint.Shape _shape in _slide.Shapes) {
//check for textframes
if (_shape.HasTextFrame == MsoTriState.msoTrue) {
var textFrame = _shape.TextFrame;
if (textFrame.HasText == MsoTriState.msoTrue) {
var textRange = textFrame.TextRange;
PrintAllParagraphs(textRange);
}
}
//check for tables
if(_shape.HasTable == MsoTriState.msoTrue) {
var slideTable = _shape.Table;
int rowCount = slideTable.Rows.Count;
int colCount = slideTable.Columns.Count;
for(int y = 1; y <= rowCount; y++) {
for(int x = 1; x <= colCount; x++) {
var tRange = slideTable.Cell(y, x).Shape.TextFrame.TextRange;
PrintAllParagraphs(tRange);
}
}
}
} //loop shapes
} //loop slides
打印功能
public void PrintAllParagraphs(PowerPoint.TextRange textRange) {
for (int i = 1; i <= textRange.Paragraphs().Count; i++) {
PowerPoint.BulletFormat bulletFormat = textRange.Paragraphs(i).ParagraphFormat.Bullet;
Console.WriteLine( (bulletFormat.Type == PowerPoint.PpBulletType.ppBulletNone) ? textRange.Paragraphs(i).Text.ToString() : "* " + textRange.Paragraphs(i).Text.ToString());
}
}
我还应该在幻灯片的形状内检查其他东西吗?任何帮助,将不胜感激。谢谢。
解决方案
好的,事实证明这是一个 SmartArt,这就是检查 Shapes/Tables 没有检测到它的原因。
我所要做的就是循环 Smart Art 中的节点并从 TextRange 中获取文本。我注意到文本由“\r”分隔,因此通过拆分它,我能够从中获得正确的输出。
//check for SmartArt
if(_shape.HasSmartArt == MsoTriState.msoTrue) {
foreach( SmartArtNode node in _shape.SmartArt.AllNodes) {
var txtRange = node.TextFrame2.TextRange;
var txt = txtRange.Paragraphs.Text.Split(new string[] { "\r" }, StringSplitOptions.None);
foreach(string line in txt)
Console.WriteLine(line);
}
}
推荐阅读
- javascript - 需要 Javascript(或 JQuery)长字符串搜索和 CSS 插入帮助
- java - 如何使用 Selenium 在撰写部分中单击更多选项?
- typescript - 缩小工厂返回类型而不通过类的最佳方法
- visual-studio - 如何正确停止运行 dotnet core web 应用程序?
- scala - 输入 SQL 并输出集合的 Scala 库,但适用于 SPARQL / Gremlin?
- c# - WPF / WindowChrome / 模糊“故障”背后
- android - 我想在我的应用上添加带有广告的退出警报对话框
- java - 教科书中的一个铸造问题——是 0.05 还是 0.5?
- linux - IPython 未打开(语法无效)
- angularjs - 等待量角器与页面同步时出错:“angul arJS 可测试性和角度可测试性都未定义