台灣最大程式設計社群網站
線上人數
1178
 
會員總數:242629
討論主題:187612
歡迎您免費加入會員
討論區列表 >> C# >> 利用C#來操作PowerPoint的文字置換
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
利用C#來操作PowerPoint的文字置換
價值 : 100 QP  點閱數:318 回應數:2

樓主

小牛
門外漢
0 1
24 1
發送站內信

各位大大好,小弟最近想寫一個ppt置換文字的程式,雖然說他ppt本身就已經有這個功能,但若是不用開啟就可改動一個(甚至多個)ppt來置換文字
例如: 台灣的台 改為臺 等等....但是1.我打了一陣子, 用txt檔來存取都沒問題 但是當我想存成pptX檔時就連開都不能開,附上小弟有點戳的代碼,請各位大神指點迷津
是因為參考的問題 還是有其他的原因 2.如果能給個如何一次改很多文字 例如:搜尋(X,Y,Z) 取代成(A,B,C) 然後告訴使用者有幾個文字被轉換之類的


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Office.Core;
using powerpoint = Microsoft.Office.Interop.PowerPoint;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Directory.SetCurrentDirectory(@"C:\");
Microsoft.Office.Interop.PowerPoint.Application powerpoint_App=new Microsoft.Office.Interop.PowerPoint.Application();
Microsoft.Office.Interop.PowerPoint.Presentations multi_presentation=powerpoint_App.Presentations;
Microsoft.Office.Interop.PowerPoint.Presentation presentation=multi_presentation.Open(@"C:\123.pptx");
string presentation_text="";
for (int i = 0;i<presentation.Slides.Count;i++)
{
foreach (var item in presentation.Slide[i+1].Shapes)
{
var shape = (powerpoint.Shape)item;
if (shape.HasTextFrame == MsoTriState.msoTrue)
{
var textRange = shape.TextFrame.TextRange;
var text=textRande.Text;
presentation_text +=text+"";
}
}
}
}
string strData=presentation_text;
strData=strData.Replace("台","臺");
File.WriteAllText("test.pptx",strData);
powerpoint_App.Quit();
}
}
}



用成txt檔可以存 也可以顯示 但是存成pptx就會無法開啟 請大神指點及建議

搜尋相關Tags的文章: [ C# ppt 置換 ] ,
本篇文章發表於2018-01-15 17:17
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

春天
檢舉此回應
基本上你的strData格式應該是文字,並非PPT格式
單純存成該副檔名而格式錯誤是打不開的
Microsoft.Office.Interop.PowerPoint應該不止有讀檔的部份,還有修改及存檔
可能要去找一下相關的用法
本篇文章回覆於2018-01-17 15:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小牛
檢舉此回應
謝謝春天大大 我有發現我這個問題
我現在的想法
1.用新開一個ppt 把原本的資料複製 後儲存成ppt
2.直接開啟ppt 再利用搜索所有字 再取代所有的
不知道哪種比較好 因為我看很多文章都是要載別人寫好的dll
可是我想應該有比較方便的方法
本篇文章回覆於2018-01-17 22:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.