PDA

View Full Version : سوال: مشکل در Mail Margin word



رامین مرادی
دوشنبه 17 مهر 1396, 10:05 صبح
وقت بخیر دوستان.
من با به کمک یکی از تایپیکهای سایت کد زیر رو برای میل مرج ایجاد کردم. اما مشکل اینه که داده ها جایگزین نمیشه!!:افسرده::افسرده:
ممکنه مشکل از ورد باشه؟ورد من 2013 هست . کد هم به صورت زیر هست




//THE LOCATION OF THE TEMPLATE FILE ON THE MACHINE;
Object oTemplatePath = string.Format("{0}\\NewDocument.dot", Application.StartupPath);


//OBJECT OF MISSING "NULL VALUE"
Object oMissing = System.Reflection.Missing.Value;


//OBJECTS OF FALSE AND TRUE
Object oTrue = true;
Object oFalse = false;


//CREATING OBJECTS OF WORD AND DOCUMENT
Microsoft.Office.Interop.Word.Application oWord = null;
Microsoft.Office.Interop.Word.Document oWordDoc = null;
public Form1()
{
InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
String FilePath = "C:\\Users\\6575\\Desktop\\A5.docx";
// تبدیل فایل به آرایه بایتی
byte[] FileBuffer = System.IO.File.ReadAllBytes(FilePath);
// حالا این آرایه رو داخل دیتابیس درج کن
System.IO.File.WriteAllBytes(oTemplatePath.ToStrin g(), FileBuffer);
oWord = new Microsoft.Office.Interop.Word.Application();
oWordDoc = new Microsoft.Office.Interop.Word.Document();


//Adding A New Document From A Template
oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);




int iTotalFields = 0;
// Finding Mailmerge Fields
foreach (Microsoft.Office.Interop.Word.Field myMergeField in oWordDoc.Fields)
{
iTotalFields++;
Microsoft.Office.Interop.Word.Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;


// Only Get The Milmerge Fields
if (fieldText.StartsWith(" MERGEFIELD"))
{
// Gives The Fieldnames as Entered in .DOT File
string fieldName = fieldText.Substring(12, fieldText.IndexOf(" ", 12) - 12);


switch (fieldName)
{
case "Date":
myMergeField.Select();
oWord.Selection.TypeText(textBox1.Text);
break;


case "Id":
myMergeField.Select();
oWord.Selection.TypeText(textBox2.Text);
break;
// And So On


default:
break;
}
}
}




//Showing The Document To The User
oWord.Visible = true;
}

danialafshari
دوشنبه 17 مهر 1396, 10:59 صبح
ببینید این بدردتون میخوره؟
https://stackoverflow.com/questions/31874300/how-do-you-mail-merge-a-word-document-in-c-sharp

رامین مرادی
دوشنبه 17 مهر 1396, 11:17 صبح
ببینید این بدردتون میخوره؟
https://stackoverflow.com/questions/31874300/how-do-you-mail-merge-a-word-document-in-c-sharp

کلا فایل تمپلیتی هم که درست میکنم انگار مشکل داره. تو یه مسیر ذخیره میکنم بعد میبینم کلا نیستش:افسرده:
احتمال میدم مشکل از خود ورد باشه.
ممنون میشم اکه امکانش هست یه فایل ورد بفرستید که حاوی سه فیلد Id,Date,Pa باشه

رامین مرادی
دوشنبه 17 مهر 1396, 11:51 صبح
تقریبا مشکل رو فهمیدم. وقتی فیلدها توی هدر فایل ورد باشن تغییر پیدا نمیکنن. اما من نیاز دارم تا این تغییر تو هدر هم اتفاق بی افته:گریه:

همچنین وقتی داخل یک Shape هم باشه همین اتفاق می افته

به نظرتون میشه از جواب لینک زیر برا اینم استفاده کرد؟(البته این لینک یه کار دیگه میکنه منظورم قسمت forech هست)
https://stackoverflow.com/questions/14256417/word-automation-find-and-replace-not-including-text-boxes

meysam_online2012
چهارشنبه 19 مهر 1396, 10:50 صبح
سلام من هم از همین کد استفاده میکنم خیلی هم خوب جواب میده

فقط گزینه هایی که داخل تمپلیت میذارینو داخل تکست باکس نذارین

meysam_online2012
چهارشنبه 19 مهر 1396, 10:52 صبح
فقط کدش چندتایی ایراد داره که باید درست بشه مثلا یه نمونش اینه که اخر کار باید فایل ورد رو ببندین با دستور .quit یا close وگرنه فایل های وردی که باز کردین داخل پروسس های سیستم میمونه و احتمال داره خطا بده یا کار نکنه

meysam_online2012
چهارشنبه 19 مهر 1396, 10:58 صبح
من یه سوال داشتم

چطوری میتونم یه لیست رو به تمپلیت بفرستم؟

mr.sirwan
چهارشنبه 19 مهر 1396, 11:58 صبح
من یه سوال داشتم

چطوری میتونم یه لیست رو به تمپلیت بفرستم؟

قبل از هرچیز لازمه یاداوری کنم که سوالتون رو یا در تاپیک جدید بپرسین (چون سوالتون با این تاپیک زیاد مرتبط نیستش) یا تو همون تاپیکی که کد رو ازش برداشتین، اینجوری تاپیک اصیل پربارتر خواهد بود (برای مراجعه های بعدی که به تاپیک خواهد شد) که هرکسی مشکل مشابهی داشت تو همون تاپیک مشکلش برطرف بشه

حالا از اینا بگذریم، چجور لیستی مدنظرتون هست؟

meysam_online2012
چهارشنبه 19 مهر 1396, 12:01 عصر
قبل از هرچیز لازمه یاداوری کنم که سوالتون رو یا در تاپیک جدید بپرسین (چون سوالتون با این تاپیک زیاد مرتبط نیستش) یا تو همون تاپیکی که کد رو ازش برداشتین، اینجوری تاپیک اصیل پربارتر خواهد بود (برای مراجعه های بعدی که به تاپیک خواهد شد) که هرکسی مشکل مشابهی داشت تو همون تاپیک مشکلش برطرف بشه

حالا از اینا بگذریم، چجور لیستی مدنظرتون هست؟


ممنون بابت پاسخ و عذرخواهی بابت سوال

فرض کن یه نامه میخوای ایجاد کنی که چندتا گیرنده داره

چطور باید یه لیست استرینگ رو به تمپلیت بفرستم؟

mr.sirwan
چهارشنبه 19 مهر 1396, 12:06 عصر
ممنون بابت پاسخ و عذرخواهی بابت سوال

فرض کن یه نامه میخوای ایجاد کنی که چندتا گیرنده داره

چطور باید یه لیست استرینگ رو به تمپلیت بفرستم؟

اگه سوال رو درست متوجه شده باشم، شما میتونین لیست استرینگ رو به یک متغیر استرینگ تبدیل کنین که اسامی گیرندگان یا با کاما (ویرگول) از هم جدا شدن، و یا اینکه با کاراکتر کنترلی n\ حالا ارسالش مثل بقیه متغیر ها میمونه

meysam_online2012
چهارشنبه 19 مهر 1396, 12:11 عصر
اگه سوال رو درست متوجه شده باشم، شما میتونین لیست استرینگ رو به یک متغیر استرینگ تبدیل کنین که اسامی گیرندگان یا با کاما (ویرگول) از هم جدا شدن، و یا اینکه با کاراکتر کنترلی n\ حالا ارسالش مثل بقیه متغیر ها میمونه

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

mr.sirwan
چهارشنبه 19 مهر 1396, 13:12 عصر
شما قصد دارین با mail merge field یک تیبل رو بذارین رو سند؟ ساخت تیبل دیگه راهش جداست، توسط میل مرج قابل پیاده سازی نیست

meysam_online2012
چهارشنبه 19 مهر 1396, 13:19 عصر
من میخوام مثل یه گزارش یه تیبل رو توی ورد پر کنم.

برای مثال یه نامه خرید کالا رو در نظر بگیر

اگه سه تا کالا خرید شده باشه باید اسم و قیمت و تعداد کالا رو نمایش بده حالا چطور باید اینکارو کرد سواله.

بقیه قسمت ها که با میل مرج انجام شد

mr.sirwan
چهارشنبه 19 مهر 1396, 13:21 عصر
یه سر به این لینک بزن:
https://msdn.microsoft.com/en-us/library/aa537149(v=office.11).aspx
(https://msdn.microsoft.com/en-us/library/aa537149(v=office.11).aspx)
از اینجا به بعد رو پیشنهاد میدم تاپیک جدید ایجاد کنین

رامین مرادی
پنج شنبه 20 مهر 1396, 08:37 صبح
سوال من به کجا ها کشیده شد. :لبخند:

دوستان من بالای فایل وردم یه shape دارم . داخلش با میل مرج چند تا فیلد گذاشتم. وقتی میخوام تغییر بدم چون اون شیپ من تو قسمت هدر هست تغییر نمیکنه ولی وقتی داخل متنم باشه بیرون از قسمت هدر و فوتر اونموقع تغییر میکنه