PDA

View Full Version : سوال: دستکاری فایلهای Microsoft word از طریق C#



Moseyza
دوشنبه 02 دی 1392, 00:01 صبح
با سلام

آیا میشه برنامه ای نوشت که یک فایل word رو باز کنه و هرجای دلخواهش با فونت دلخواه متنی رو وارد کنه؟

پیشاپیش از راهنمایی همه دوستان ممنونم

drsina
دوشنبه 02 دی 1392, 00:20 صبح
سلام .
با سی شارپ کلن میتونی یه فایل ورد جدید بسازی / اینکه چه جوری تغییرش بدی رو کار نکردم تا حالا (شاید بشه )
ولی اگه دقت کرده باشی ، فایل ورد یه فایل مخفی Temp پهلوی خودش میسازه . توو اون یه فایل .tmp هست که اولش PK داره ، یعنی با الگوی zip ذخیره شده . اگه اونو اکسترکت کنی ، ازش چندتا فایل xml میاد بیرون که درواقع تمام نوشته ها و آرایه ای از عکس ها و گرافیک هایی که استفاده شد و مخصوصا کاری که توو میخوای مثلا فونت ها و رنگ ها و چیز های دیگه ، که می تونی با دیتا باندینگ همه رو راحت تغییر بدی . :گیج:
مطمئنن این بدترین راهه و دوستان حتما راه های خوبی رو ارائه میدن ، ولی اگه نشد ، بهترین کار همینه .
اینم برا اطلاعات عمومی /:لبخند:

aminjooon2005
دوشنبه 02 دی 1392, 09:47 صبح
سلام
ابتدا
using Word = Microsoft.Office.Interop.Word;

سپس:
Word.Application m_wordApp = new Word.ApplicationClass();
Word.Document m_wordDoc = null;
object fileNameObject = az;
object TRUE_VALUE = true;
object FALSE_VALUE = false;
object MISSING_VALUE = System.Reflection.Missing.Value;

m_wordApp.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlert sNone;
m_wordApp.Visible = false
m_wordApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAut omationSecurityForceDisable;
m_wordDoc = m_wordApp.Documents.Open(ref fileNameObject, ref FALSE_VALUE, ref FALSE_VALUE, ref FALSE_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref FALSE_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE);

m_wordDoc.Activate();




private void FindAndReplace(Word.Application wordApp,
object findText, object replaceText)
{
object matchCase = true;
object matchWholeWord = true;
object matchWildCards = false;
object matchSoundsLike = false;
object matchAllWordForms = false;
object forward = true;
object format = false;
object matchKashida = false;
object matchDiacritics = false;
object matchAlefHamza = false;
object matchControl = false;
object read_only = false;
object visible = true;
object replace = 2;
object wrap = 1;
wordApp.Selection.Find.Execute(ref findText, ref matchCase,
ref matchWholeWord, ref matchWildCards, ref matchSoundsLike,
ref matchAllWordForms, ref forward, ref wrap, ref format,
ref replaceText, ref replace, ref matchKashida,
ref matchDiacritics,
ref matchAlefHamza, ref matchControl);
}
public bool FindAndKillProcess(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{

if (clsProcess.ProcessName.StartsWith(name))
{
clsProcess.Kill();
// return true;
}
}
return false;
}



ببخشید وقت نداشتم مرتب کنم ولی کلیات کار همینه

اون روشی که دوستمون هم توضیح دادن شدنیه ولی از این روش سخت تره
ولی خوبی ای که داره تو اون روش نیازی نیست آفیس نصب باشه وای اینجا هتما باید نصب باشه