PDA

View Full Version : سوال: کسی می تونه تو ساخت اتوماسیون اداری بهم کمک کنه ؟



aradrobo
شنبه 09 دی 1391, 15:40 عصر
سلام . کسی می تونه یک اتوماسیون اداری برام بسازه و یا کمک کنه در ساخت آن ؟

danialafshari
شنبه 09 دی 1391, 15:42 عصر
سلام دوست عزیز
شما استارت کارو بزن هر جاش گیر کردی سوال کن دوستان جواب میدن

aradrobo
شنبه 09 دی 1391, 16:11 عصر
استارت کار از اینجاست که ما تکست باکس داریم . می خواهم که وقتی توی تکست باکس چیزی نوشتم ، متن درون تکست باکس به عنوان تاریخ در گوشه سمت چپ کاغذ درون فایل word office ذخیره شود . چه کنم ؟

SHD.NET
شنبه 09 دی 1391, 16:13 عصر
اوه او ه :لبخند: عجب استارت سختی . :لبخند:

اگه پیدا کردم جوابشو می نویسم اینجا

khokhan
شنبه 09 دی 1391, 16:58 عصر
سنگ بزرگ برداشتي اخوي
اين يعني نمي خوام بزنم :متعجب:

SHD.NET
شنبه 09 دی 1391, 16:59 عصر
آره و خیلی هم بزرگه :لبخند:

SHD.NET
شنبه 09 دی 1391, 17:00 عصر
من نتوسنتم جواب اونو پیدا کنم . نشد .

khokhan
شنبه 09 دی 1391, 17:03 عصر
سنگ بزرگ برداشتي اخوي
اين يعني نمي خوام بزنم :متعجب:

Microsoft.Office.Interop.Word.Document oDoc = new Document(); oDoc = Open(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc"); if (oDoc.Bookmarks.Exists("DateOfScan")) { object oBookMark = "DateOfScan"; oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = txtSelectDate.Text; } SaveAs(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc"); this.Close(); MessageBox.Show("The file is successfully saved!");

khokhan
شنبه 09 دی 1391, 17:05 عصر
Microsoft.Office.Interop.Word.Document oDoc = new Document(); oDoc = Open(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc"); if (oDoc.Bookmarks.Exists("DateOfScan")) { object oBookMark = "DateOfScan"; oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = txtSelectDate.Text; } SaveAs(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc"); this.Close(); MessageBox.Show("The file is successfully saved!");

khokhan
شنبه 09 دی 1391, 17:09 عصر
ببخشيد كدها به هم ريخته شد
هر كاري كردم نشد
نمي دونم چرا

SHD.NET
شنبه 09 دی 1391, 17:42 عصر
بفرما اینم درستش


Microsoft.Office.Interop.Word.Document oDoc = new Document();
oDoc = Open(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc");
if (oDoc.Bookmarks.Exists("DateOfScan")) { object oBookMark = "DateOfScan";
oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = txtSelectDate.Text;
} SaveAs(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc");
this.Close();
MessageBox.Show("The file is successfully saved!");

SHD.NET
شنبه 09 دی 1391, 17:43 عصر
وا ، اینم که غاط زد !!!! مال منم درست نشد !! :لبخند:

aradrobo
شنبه 09 دی 1391, 20:02 عصر
بفرما اینم درستش


Microsoft.Office.Interop.Word.Document oDoc = new Document();
oDoc = Open(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc");
if (oDoc.Bookmarks.Exists("DateOfScan")) { object oBookMark = "DateOfScan";
oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = txtSelectDate.Text;
} SaveAs(@"C:\Documents and Settings\tsiphambo\Desktop\Edgars.doc");
this.Close();
MessageBox.Show("The file is successfully saved!");


خط های Open و SaveAs را نمی شناسد . چه کنم ؟

samadblaj
یک شنبه 10 دی 1391, 11:59 صبح
سلام ؛ تو قالب کلاس پیوست کنید سایت بعضی کلمات رو به صورت نا مناسب قرار میده....

captain_black81
یک شنبه 10 دی 1391, 13:19 عصر
این نرم افزارها بارها کارشده
http://barnamenevis.org/showthread.php?375757
چیزی بنویسید که نباشه

danialafshari
یک شنبه 10 دی 1391, 14:24 عصر
سلام دوست عزیز
اینجا رو هم یک نگاه بندازید
http://support.microsoft.com/kb/316384
موفق باشی

aradrobo
یک شنبه 10 دی 1391, 15:05 عصر
این نرم افزارها بارها کارشده
http://barnamenevis.org/showthread.php?375757
چیزی بنویسید که نباشه

من قرار نیست نرم افزاری بخرم . لینکی هم که دادین اصلاً مرتبط نیست با درخواست من . لطفاً اگر اطلاعاتی دارید کد ها را در اختیارم قرار دهید . با تشکر

aradrobo
یک شنبه 10 دی 1391, 15:07 عصر
سلام دوست عزیز
اینجا رو هم یک نگاه بندازید
http://support.microsoft.com/kb/316384
موفق باشی

خیلی گیج کننده بود . لطفاً بیشتر راهنمایی کنید . با تشکر

aradrobo
سه شنبه 12 دی 1391, 17:22 عصر
کسی هست که راهنمایی کند ؟

khokhan
پنج شنبه 14 دی 1391, 12:31 عصر
یه نگاه به این کد بنداز ببین به کارت می آد



byte[] ba = Encoding.ASCII.GetBytes(MyRichTextBox.Rtf.ToString ());

MemoryStream ms = new MemoryStream(ba);

FlowDocument f = new FlowDocument();
TextRange tr = new TextRange(f.ContentStart, f.ContentEnd);
tr.Load(ms, System.Windows.DataFormats.Rtf);
ms.Close();

byte[] bytes = ms.ToArray();
string documentFullName = @"D:\document.doc";
FileStream fs = new FileStream(documentFullName, FileMode.Create, FileAccess.Write);
fs.Write(bytes, 0, (int)bytes.Length);
fs.Close();

khokhan
پنج شنبه 14 دی 1391, 12:44 عصر
یه کمی خلاقیت به خرج بدی اینم بد نیست



try

{

object missing = System.Reflection.Missing.Value;

object Visible = true;

object start1 = 0;

object end1 = 0;



Microsoft.Office.Interop.Word.ApplicationClass WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

Microsoft.Office.Interop.Word.Document adoc = WordApp.Documents.Add(ref missing, ref missing, ref missing, ref missing);

Microsoft.Office.Interop.Word.Range rng = adoc.Range(ref start1, ref missing);

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.InitialDirectory = @"C:\";

saveFileDialog1.Title = "Save word Files";

saveFileDialog1.CheckFileExists = false;

saveFileDialog1.CheckPathExists = true;

saveFileDialog1.DefaultExt = "docx";

saveFileDialog1.Filter = "Docx files (*.docx)|*.doc|All files (*.*)|*.*";

saveFileDialog1.FilterIndex = 2;

saveFileDialog1.OverwritePrompt = true;

saveFileDialog1.RestoreDirectory = true;



if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

rng.Font.Name = "Calibri (Body)";

rng.InsertAfter(rtbenglishfile.Text);

object filename = saveFileDialog1.FileName;

adoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing,

ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

//WordApp.Visible = true;

WordApp.Visible = false;

adoc.Close(ref missing, ref missing, ref missing);

WordApp.Quit(ref missing, ref missing, ref missing);

WordApp = null;

}

}

catch (Exception o)

{

MessageBox.Show(o.Message);

}

khokhan
پنج شنبه 14 دی 1391, 13:02 عصر
از طریق پکیگ xml هم می شه این کارو کرد

اگه نتونستی یه ندا بده نمونه واسط بفرستم
یاحق
http://www.microsoft.com/en-us/download/details.aspx?id=5124

یه چیزی مثل این :


using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

const string fileName = @"C:\YourFile.docx";
string dataToInsert = txtYourRichTextBox.Text;

using (var document = WordprocessingDocument.Open(fileName, true))
{
var doc = document.MainDocumentPart.Document;
document.Body.Append(dataToInsert);
document.Save();
}

khokhan
پنج شنبه 14 دی 1391, 14:54 عصر
این یه نمونه از ارسال متن تکست باکس در فایل word می باشد امید که مفید باشد

aradrobo
پنج شنبه 14 دی 1391, 18:45 عصر
این یه نمونه از ارسال متن تکست باکس در فایل word می باشد امید که مفید باشد

من می خواهم متن خیلی شیک درون ورد قرار بگیرد . همانند یک فاکتور فروش . می خواهم اون فایل ورد دارای سربرگ باشد .
نه اینکه زیر هم بنویسه . مثلاً تاریخ ثبت باید بالا سمت چپ باشه . مثلاً متن نامه باید وسط سمت راست نوشته بشه و ....

khokhan
پنج شنبه 14 دی 1391, 21:07 عصر
عزیز جان
شما از ما راهنمایی خواستین ما هم در حد بضاعت آنچه در چنته زوار درفته مان بود دریغ نکردیم
البته این نمونه بود فقط یه نمونه


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

khokhan
پنج شنبه 14 دی 1391, 23:09 عصر
با سلام

بیا این هم همون چیزی که می خواستی

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

aradrobo
شنبه 16 دی 1391, 18:51 عصر
با سلام

بیا این هم همون چیزی که می خواستی

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

خیلی لطف کردی . فقط یه سوال اساسی . چطور می تونم بجای اون بسم الله ( یعنی قسمت هدر ) یک عکس دلخواه از هدر بگذارم و یا اینکه من یک عکس دارم از سربرگ شرکت .
چطور می توانم کاری کنم که این متن ها برای سربرگ قرار بگیره ؟

ممنون می شم کمک کنی .

khokhan
شنبه 16 دی 1391, 18:58 عصر
سلام
متوجه منظورتون نشدم واضح بگین
اگه منضورتون اینه که آرم شرکت روی برگ word باشه که خوب کاری نداره

اما اگه منظورت اینه که از داخل فرم برنامه به برگ انتقال ÷یدا کنه قضیه فرق می کنه

aradrobo
شنبه 16 دی 1391, 19:55 عصر
سلام
متوجه منظورتون نشدم واضح بگین
اگه منضورتون اینه که آرم شرکت روی برگ word باشه که خوب کاری نداره

اما اگه منظورت اینه که از داخل فرم برنامه به برگ انتقال ÷یدا کنه قضیه فرق می کنه

فرض کن این سربرگ شرکت ماست :
http://graphic.ir/originals/__2/___28/_20110605_1301493344.jpg

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

لطفاً توی برنامه هم بگین که از اول به چه چیزهایی نیاز داریم و بگین که هر دستور دقیقاً چه کاری را انجام می دهد ؟

khokhan
شنبه 16 دی 1391, 20:34 عصر
" متن اصلی نامه هم بتونیم داخل قسمت اصلی عکس بذاریم"

این یعنی چی ؟؟؟؟؟؟؟؟؟؟؟

منظورتون از عکس چیه؟
نکنه منظورتون اینه که تنه اصلی نامه رو توی برنامه تایپ کنی وبعد بفرستی توی word

می بخشین اما من متوجه منظور شما نمی شم

zarrinnegar
شنبه 16 دی 1391, 21:26 عصر
ببینید همه کار ها رو نمیشه با هم انجام داد
تا اونجایی که من اطلاع دارم یه سری از کار ها رو میسپرن به ورد مثلا باید شما سربرگتون رو با فتوشاپ باید 5 تکه کنین تکه هدر و تکه فوتر و دو طرف سربرگ و وسط سربرگ
بعد توی محیط ورد اینهارو تنظیم کنید تا بشه همون صفحه ای که میخوایید
بعد جای ثابت ها رو باید توی ورد بوکمارک بزارید با اسم های خاص مثلا برای تاریخ و شماره و ...

بعد به عنوان یک Template اون رو ذخیره کنید
بعد توی برنامه نویسی اون Template رو باز میکنید و نوشته رو داخلش میزارید
به این راحتی گفته شد ولی یکمی کار داره
معمولا توی اتوماسیونها این کار رو میکنن بعد حتی میتونی از کاربر بپرسی که چه سایز سربرگی رو میخواد استفاده کنه A4 , A5 و با انتخاب اون شما Template مربوطه رو لود میکنید


کار دیگه ای که میشه انجام داد اینه که بجای اینها بیایی و از گزارش ساز استفاده کنی و هر سربرگی رو که خواستی بزاری داخلش و وسطش هم نوشته رو لود کنی که خیلی راحتتره حتما نباید ورد باشه بعدش میشه نامه رو نمایش داد و ارسال کرد(ایمیل کرد) و فکس کرد و ....

khokhan
یک شنبه 17 دی 1391, 00:34 صبح
البته وصد البته فرمایشات جناب zarrinnegar بسیار متین وقابل تامل است

واینجانب شدیدا با نظر ایشون موافقم و از توضیحات خوب وسازنده ایشان تشکر می کنم ومعتقدم که برای این

دست کارها استفاده از گزارش سازها مناسبتر است

اما دیدن این نمونه هم خالی از لطف نیست !!! ملاحظه بفرمائید

اینه اونی که می گفتم به همراه سربرگ ومرتب

sepide_68_91
دوشنبه 18 دی 1391, 10:13 صبح
البته وصد البته فرمایشات جناب zarrinnegar بسیار متین وقابل تامل است

واینجانب شدیدا با نظر ایشون موافقم و از توضیحات خوب وسازنده ایشان تشکر می کنم ومعتقدم که برای این

دست کارها استفاده از گزارش سازها مناسبتر است

اما دیدن این نمونه هم خالی از لطف نیست !!! ملاحظه بفرمائید

اینه اونی که می گفتم به همراه سربرگ ومرتب

سلام
میشه بفرمایید چطور میشه تاریخ رو بصورت
دوشنبه 18 دی ماه سال 1391
, و همین طور مناسبت روز رو؟
نمایش داد؟؟
ممنون

aradrobo
دوشنبه 18 دی 1391, 14:37 عصر
البته وصد البته فرمایشات جناب zarrinnegar بسیار متین وقابل تامل است

واینجانب شدیدا با نظر ایشون موافقم و از توضیحات خوب وسازنده ایشان تشکر می کنم ومعتقدم که برای این

دست کارها استفاده از گزارش سازها مناسبتر است

اما دیدن این نمونه هم خالی از لطف نیست !!! ملاحظه بفرمائید

اینه اونی که می گفتم به همراه سربرگ ومرتب


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

khokhan
دوشنبه 18 دی 1391, 20:10 عصر
سلام
من برنامه رو مرور کردم همه قسمتها درست عمل می کنند

راجع به اون پیشنهادتون که مناسبتها رو همراه با تاریخ درج کنه یه کمی کار کردم

البته بعضی از روزهای سال که مناسبتی نداره طبعا نشون نمی ده وفقط نام ایام هفته وسال وماه رونشون میده و بقیه

ایام مثل مناسبتهای مهم ملی یا مذهبی یا جهانی و... رونشون میده وبه فایل word هم انتقال میده

کلاس مورد استفاده در این برنامه رو یکی از دوستان زحمتشو کشیده درست کرده وتوهمین سایت گذاشته بود اگه

خوشتون اومد سلامت این دوست خوبمون هم دعا کنین

برنامه رو براتون می زارم

دوست داشتم تا سایر دوستان هم نظر بدن وایراداشو بگن اما ظاهرا کسی علاقه ای بهش نداره

سورس :

sepide_68_91
سه شنبه 19 دی 1391, 10:38 صبح
سلام
ممنونم

sepide_68_91
سه شنبه 19 دی 1391, 10:56 صبح
فقط میشه بگید چطور فرم , اصلا قابل تغییر اندازه نیست؟؟؟

aradrobo
سه شنبه 19 دی 1391, 15:01 عصر
لطفاً بگویید چطور می توانم ثبت امضا نمایم . یعنی یک کامبو باکس داشته باشم ، اسم 3 نفر توش باشه . هر اسمی رو انتخاب کردم ، امضا اون فرد پای این سربرگ شرکت زده بشه . لطفاً راهنمایی کنید .

khokhan
سه شنبه 19 دی 1391, 15:09 عصر
با سلام خدمت همه دوستان

یه کم سرم شلوغه اگه مهلت بدین می سازم واستون :چشمک:

راستی شما هم بیکار نشنین ایده بدین تا برنامه بهتر بشه :متفکر:

khokhan
سه شنبه 19 دی 1391, 16:01 عصر
دوست عزیز
درقسمت پراپرتی فرم اگه مقدار maximizebox ملاحظه کنیدfalse می باشد

aradrobo
سه شنبه 19 دی 1391, 16:14 عصر
راستی شما هم بیکار نشنین ایده بدین تا برنامه بهتر بشه :متفکر:

پیشنهادات من :
1- دارای قابلیت درج امضا 5 نفر
2- قابلیت دریافت فایل پیوست ( این فایل ممکن است txt و یا عکس و یا word باشد )
3- رونوشت : رونوشت حتماً در پایان سربرگ قرار بگیرد و با اضافه شدن متن نامه ، جای آن تغییر نکند .

aradrobo
سه شنبه 19 دی 1391, 19:58 عصر
من شبیه به این برنامه رو واسه ساخت فاکتور شروع کردم . ولی موفق نشدم . میشه لطفاً راهنمایی کنید که برای قرار دادن یک مقدار باید چه کار کرد ؟ با دانلود فایل متوجه منظورم خواهید شد .

خواهشمندم کاملاً و روان توضیح دهید . با تشکر .

دانلود فایل پروژه فاکتور (http://s2.picofile.com/file/7613133545/Factor.rar.html)

khokhan
سه شنبه 19 دی 1391, 23:15 عصر
سلام

عزیز دل برادر

قضیه فاکتور با نامه فرق می کنه اصلا کار شما منطقی نیست که بخواهید با این شیوه فاکتور درست کنید

شما به هنگام طراحی فاکتور در خواست مشتری رو باید n در نظر بگیرید یعنی ممکنه یک قلم کالا از شما بخواهند ویا 100 قلم حالا با این فرض واین شیوه پیشنهادی شما می شه فاکتور درست کرد ؟

اصلا ماچه دلیلی داریم که گزارش سازی قوی مثل استمول رو کنار بگذاریم وبیایم با این شیوه اشتباه پیش بریم شما توی اون محیط گسترده هم می تونین ردیفهای بیشمار از درخواست مشتری رو داشته باشین وهم آرم شرکت رو وارد کنین وهم امضا هر بنی بشری رو که خواستین فرو کنین توحلقش

تازه می تونین به هر فرمتی هم که خواستین خروجی بگیرین

mohsenaminzare
پنج شنبه 21 دی 1391, 02:24 صبح
لطفاً بگویید چطور می توانم ثبت امضا نمایم . یعنی یک کامبو باکس داشته باشم ، اسم 3 نفر توش باشه . هر اسمی رو انتخاب کردم ، امضا اون فرد پای این سربرگ شرکت زده بشه . لطفاً راهنمایی کنید .

کاری نداره بعد از قراردادن کامبو باکس در کد اینو بنویس combobox1.selecteditem.tostring()

mohsenaminzare
پنج شنبه 21 دی 1391, 02:29 صبح
من فرمت بعضی نامه رو از قبل آماده دارم که با گذاشتن یک کامبو باکس امکان انتخاب اون رو به کاربر دادم . حالا یم مشکل اینجاست که متن نامه را برای اینکه کاملا از دو طرف تراز باشه وقشتگ شه درون تکست باکس گذاشتم حالا دیگه فیلد ها رو نمی شناسه که پرشون کنه چکار باید کنم

Saber_Fatholahi
پنج شنبه 21 دی 1391, 08:53 صبح
آقا این متن من نوشتم و اسه شماره گذاری و زدن امضا
موفق وموید باشید
البته ویژوال استودیو نصب نداشتم اینم با نود پد در آوردم زیادی شلوغه ببخشید اما واضحع کارش

private bool SaveDateAndLetterNumberInWordFile(SqlConnection connection, SqlCommand command, int radifId, String letterId, String letterNumber, String todayDate, out Stream wordContent, Boolean hasAttachment)
{
wordContent = null;
Application wordApp = null;
Document wordDoc = null;
Boolean flag = false;
try
{
object missing = Missing.Value;
object missing2 = Missing.Value;
object missing3 = Missing.Value;
object missing4 = Missing.Value;
object missing5 = Missing.Value;
object missing6 = Missing.Value;
object missing7 = Missing.Value;
object missing8 = Missing.Value;
object missing9 = Missing.Value;
object missing10 = Missing.Value;
object missing11 = Missing.Value;
object missing12 = Missing.Value;
object missing13 = Missing.Value;
String fileName = "Outbox-" + DateTime.Now.ToString().Replace(':', '-').Replace('/', '-');

string pathFileWord = Path.Combine(Server.MapPath("~/FileTemp/"), fileName + ".doc");

Stream content = PadidHelper.GetWordDocument(radifId);
if (content == null)
throw new Exception("برای پیش نویس هیچ محتوایی ثبت نشده است");

using (FileStream fileStream = new FileStream(pathFileWord, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read))
{
byte[] contentTemp = content.ToByte();
fileStream.Write(contentTemp, 0, contentTemp.Length);
fileStream.Close();
}

Int32 sarbarg = 0, tab = 0;
bool result = false;
String priority = "";

//etelat sarbarg entekhab shode
command.Parameters.Clear();
command.CommandType = CommandType.Text;
command.CommandText = "SELECT sarbarg, paper, Radif FROM LnotePaper WHERE radif=@RadifId";
command.Parameters.Add("@RadifId", SqlDbType.Int).Value = radifId;
if (connection.State == ConnectionState.Closed)
connection.Open();
SqlDataReader paperReader = command.ExecuteReader(CommandBehavior.SingleRow);
if (paperReader != null)
if (paperReader.Read())
{
sarbarg = Convert.ToInt32(paperReader["sarbarg"].ToString());
tab = Convert.ToInt32(paperReader["paper"].ToString());
}

//etelat olaviat name
command.Parameters.Clear();
command.CommandType = CommandType.Text;
command.CommandText = "SELECT (SELECT p.PRDESC FROM [Prior] p WHERE p.CD = l.[PRIOR]) AS [Priority] FROM LNOTE l WHERE radif = @RadifId";
command.Parameters.Add("@RadifId", SqlDbType.Int).Value = radifId;
if (connection.State == ConnectionState.Closed)
connection.Open();
if (paperReader != null && !paperReader.IsClosed) paperReader.Close();

SqlDataReader priorityReader = command.ExecuteReader(CommandBehavior.SingleRow);
if (priorityReader != null)
if (priorityReader.Read())
{
priority = priorityReader["Priority"].ToString();
}

wordApp = new Application();
wordDoc = new Document();
Documents docs = wordApp.Documents;
wordApp.Visible = true;
missing2 = pathFileWord;
if (docs != null)
wordDoc = docs.Open(ref missing2, ref missing, ref missing, ref missing);

switch (sarbarg)
{
case 23:
case 1:
{
Range first = wordDoc.Sentences.First;
wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Font.Color = WdColor.wdColorBlack;
first.InsertBefore("\n");
first.InsertBefore("\n");
int p1 = wordDoc.Range().Paragraphs.Count;
object olevarCount = 1;
object olevarUnit = Missing.Value;
wordDoc.Sentences.First.Delete(olevarUnit, olevarCount);
int p2 = wordDoc.Range().Paragraphs.Count;
p1 = p1 - p2;
p1 = p1 - 7;
first.InsertBefore("\n");
while (p1 > 0)
{
first.InsertBefore("\n");
p1--;
}
wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphRight;
first.InsertBefore("");
wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphLeft;

if (String.IsNullOrEmpty(priority.Trim()))
{
first.InsertBefore("\n");
}
else if (priority.ToPersianString().Trim() == "خیلی فوری".Trim().ToPersianString())
{
// strSpace :=' ';
//for p2:=1 to (shomareLen-StrLen(pchar(stPrior))-6) do
// strSpace := strSpace +' ';
first.InsertBefore("اولویت: " + priority + "\n");
}
else
{
String strSpace = "";
if (tab == 0)
strSpace = " ";
//for p2:=1to(shomareLen - StrLen(pchar(stPrior)) - 6) do strSpace := strSpace + ' ';
first.InsertBefore("اولویت: " + priority + "\n");
}

first.InsertBefore("پیوست: " + (hasAttachment ? "دارد" : "ندارد") + "\n");

first.InsertBefore("شماره: " + letterNumber.ToPersianString() + "\n");

first.InsertBefore("تاریخ: " + todayDate.ToPersianString() + "\n");

result = true;
}
break;
case 22:
case 0:
{
Range first = wordDoc.Sentences.First;
wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Font.Color = WdColor.wdColorBlack;
if (tab == 1)
wordDoc.Application.Selection.ParagraphFormat.Alig nment =
WdParagraphAlignment.wdAlignParagraphRight;
first.InsertBefore("");
if (tab == 1)
{
first.InsertBefore("\n");
first.InsertBefore("\n");
}
else if (tab == 0)
{
first.InsertBefore("\n");
first.InsertBefore("\n");
first.InsertBefore("\n");
first.InsertBefore("\n");
}
else if (tab == 2)
{
first.InsertBefore("\n");
first.InsertBefore("\n");
}
wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphLeft;

if ((String.IsNullOrEmpty(priority.Trim()) || (priority.Trim().ToPersianString() == "عادی")))
first.InsertBefore("");
else
first.InsertBefore(priority);
first.InsertBefore("\n");

first.InsertBefore("پیوست: " + (hasAttachment ? "دارد" : "ندارد") + "\n");

first.InsertBefore("شماره: " + letterNumber.ToPersianString() + "\n");

first.InsertBefore("تاریخ: " + todayDate.ToPersianString() + "\n");

if (tab != 2)
{
first.InsertBefore("\n");
first.InsertBefore("\n");
}
result = true;
}
break;
case 12:
case 11:
case 2:
break;
case 24:
case 21:
{
//wordDoc.Sentences.First.Font.Color = WdColor.wdColorLime;

String numberSign = "", dateSign = "", attachmentSign = "", prioritySign = "";
//etelat sarbarg entekhab shode
command.Parameters.Clear();
command.CommandType = CommandType.Text;
command.CommandText = "SELECT NumSign,TarSign,PeySign,OlvSign FROM wordtemplate WHERE ID=@Paper";
command.Parameters.Add("@Paper", SqlDbType.Int).Value = tab;
if (connection.State == ConnectionState.Closed)
connection.Open();
if (priorityReader != null && !priorityReader.IsClosed) priorityReader.Close();

SqlDataReader paperInformationReader = command.ExecuteReader(CommandBehavior.SingleRow);
if (paperInformationReader != null)
if (paperInformationReader.Read())
{
numberSign = paperInformationReader["NumSign"].ToString().Trim();
dateSign = paperInformationReader["TarSign"].ToString().Trim();
attachmentSign = paperInformationReader["PeySign"].ToString().Trim();
prioritySign = paperInformationReader["OlvSign"].ToString().Trim();
}

if (paperInformationReader != null && !paperInformationReader.IsClosed) paperInformationReader.Close();

missing = Missing.Value;
Find findDate = wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Find;
findDate.ClearFormatting();
findDate.Text = dateSign;
findDate.MatchWholeWord = true;
findDate.Replacement.ClearFormatting();
findDate.Replacement.Text = todayDate.ToPersianString();

wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Font.Color = WdColor.wdColorBlack;

object replaceAll = WdReplace.wdReplaceAll;
bool setDate = findDate.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing, ref missing);

missing = Missing.Value;
Find findAttach = wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Find;
findAttach.ClearFormatting();
findAttach.Text = attachmentSign;
findAttach.MatchWholeWord = true;
findAttach.Replacement.ClearFormatting();
findAttach.Replacement.Text = hasAttachment ? "دارد" : "ندارد";

replaceAll = WdReplace.wdReplaceAll;
bool setAttach = findAttach.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing,
ref missing);
if (!setAttach)
{
findAttach.Text = attachmentSign.ToPersianString();
replaceAll = WdReplace.wdReplaceAll;
setAttach = findAttach.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing,
ref missing);
}
missing = Missing.Value;
Find findNumber = wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Find;
findNumber.ClearFormatting();
findNumber.Text = numberSign;
findNumber.MatchWholeWord = true;
findNumber.Replacement.ClearFormatting();
findNumber.Replacement.Text = letterNumber.ToPersianString();

replaceAll = WdReplace.wdReplaceAll;
bool setNumber = findNumber.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing,
ref missing);

if ((String.IsNullOrEmpty(priority.Trim()) || (priority.Trim().ToPersianString() == "عادی")))
priority = "";
missing = Missing.Value;
Find findPriority = wordDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Find;
findPriority.ClearFormatting();
findPriority.Text = prioritySign;
findPriority.MatchWholeWord = true;
findPriority.Replacement.ClearFormatting();
findPriority.Replacement.Text = priority.Trim();

replaceAll = WdReplace.wdReplaceAll;
bool setPriority = findPriority.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing,
ref missing);
//missing = Missing.Value;
//rang ghermez be olavyat
//wordDoc.Range(missing, missing).Sections.Item(iSections).Headers.Item(iHF Index).Range.Font.set_ColorIndex(1);
//wordDoc.Sentences.First.Font.Color = WdColor.wdColorLime;
//missing = Missing.Value;
//wordDoc.Range(missing, missing).Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Font.Color == WdColor.wdColorLime;

result = setAttach || setDate || setNumber || setPriority;
}
break;
}
wordApp.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;

Window myWindow = wordApp.ActiveWindow;
wordApp.Activate();
myWindow.Activate();
missing9 = pathFileWord;
wordDoc.SaveAs(missing9);
wordDoc.Close();
wordApp.Quit();
flag = true;
using (FileStream fileStream = new FileStream(pathFileWord, FileMode.Open, FileAccess.Read, FileShare.Read))
{
byte[] contentTemp = fileStream.ToByte();
command.CommandText = "Padid_Signature_InsertSignatureInDocument";
command.Parameters.Clear();
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Radif", SqlDbType.Int).Value = radifId;
command.Parameters.Add("@NewContent", SqlDbType.Image).Value = contentTemp;
if (connection.State == ConnectionState.Closed)
connection.Open();

Int32 ret = command.ExecuteNonQuery();
wordContent = new MemoryStream();
wordContent.Write(contentTemp, 0, contentTemp.Length);
if (ret <= 0)
return false;
fileStream.Close();
}
File.Delete(pathFileWord);
return result;
}
catch (Exception ex)
{
if (wordApp != null && wordDoc != null && !flag)
{
wordDoc.Close();
wordApp.Quit();
}
return false;
}
}

private bool SaveSignatureInWordContent(int userId, int signatureNumber, int radifId, Stream content)
{
try
{
object missing = Missing.Value;
object missing2 = Missing.Value;
object missing3 = Missing.Value;
object missing4 = Missing.Value;
object missing5 = Missing.Value;
object missing6 = Missing.Value;
object missing7 = Missing.Value;
object missing8 = Missing.Value;
object missing9 = Missing.Value;
object missing10 = Missing.Value;
object missing11 = Missing.Value;
object missing12 = Missing.Value;
object missing13 = Missing.Value;
String pathFileWord, pathFileSignature;
using (Stream signature = PadidHelper.GetSignatureStreamByUserId(userId, signatureNumber))
{
if (signature == null) return false;
String fileName = "Outbox-" + DateTime.Now.ToString().Replace(':', '-').Replace('/', '-');

pathFileWord = Path.Combine(Server.MapPath("~/FileTemp/"), fileName + ".doc");
using (FileStream fileStream = new FileStream(pathFileWord, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read))
{
byte[] contentTemp = content.ToByte();
fileStream.Write(contentTemp, 0, contentTemp.Length);
fileStream.Close();
}
pathFileSignature = Path.Combine(Server.MapPath("~/FileTemp/"), fileName + ".jpeg");
using (FileStream fileStream = new FileStream(pathFileSignature, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read))
{
byte[] contentTemp = signature.ToByte();
fileStream.Write(contentTemp, 0, contentTemp.Length);
fileStream.Close();
}
}
Application wordApp = new Application();
Document wordDoc = new Document();
Documents docs = wordApp.Documents;
wordApp.Visible = true;
missing2 = pathFileWord;
if (docs != null)
wordDoc = docs.Open(ref missing2, ref missing, ref missing, ref missing);

wordDoc.Sentences.Last.InsertAfter("\n");
wordDoc.Sentences.Last.InsertAfter(" ");
wordDoc.Sentences.Last.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;//WdParagraphAlignment.wdAlignParagraphCenter;
wordDoc.Sentences.Last.InsertAfter(" ");
wordDoc.Sentences.Last.InsertBefore("\n");
object olRang = wordDoc.Sentences.Last;
missing12 = false;
missing13 = true;
wordDoc.Sentences.Last.InlineShapes.AddPicture(pat hFileSignature, missing12, missing13, olRang);

////////missing2 = true;
////////wordDoc.Content.InsertAfter("\n\n");
//////////wordDoc.Sentences.Last.InsertAfter()
////////object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
////////wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphLeft;

////////object oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
////////InlineShapes shape = wordDoc.InlineShapes;
//////////shape. := wdAlignParagraphcenter;

////////wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphLeft;

////////missing5 = Missing.Value;
////////shape.AddPicture(pathFileSignature, ref missing5, ref missing5, ref oRng);

//object end = wordDoc.Sentences.Last;
//wordDoc.Application.Selection.ParagraphFormat.Alig nment = WdParagraphAlignment.wdAlignParagraphLeft;

//missing5 = Missing.Value;
//shape.AddPicture(pathFileSignature, ref missing5, ref missing5, ref end);

//wordApp.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader;
//object date = "Date";
//Range wrdRng = wordDoc.Bookmarks.get_Item(ref date).Range;
//wrdRng.Text = "1390-20-10".ToPersianString();
//wordApp.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;

Window myWindow = wordApp.ActiveWindow;
wordApp.Activate();
myWindow.Activate();
missing9 = pathFileWord;
wordDoc.SaveAs(missing9);
//wordDoc.SaveAs(missing9 + "-1");
wordDoc.Close();
wordApp.Quit();
//System.Threading.Thread.Sleep(2000);
using (FileStream fileStream = new FileStream(pathFileWord, FileMode.Open, FileAccess.Read, FileShare.Read))
{
byte[] contentTemp = fileStream.ToByte();
PadidHelper.SaveSignatureInDocument(radifId, contentTemp);
fileStream.Close();
}
File.Delete(pathFileSignature);
File.Delete(pathFileWord);
}
catch (Exception ex)
{
return false;
}
return true;
}

aradrobo
پنج شنبه 21 دی 1391, 13:36 عصر
آقا این متن من نوشتم و اسه شماره گذاری و زدن امضا
موفق وموید باشید
}[/CSHARP]

دوست عزیز ، من چیزی سر در نیاوردم . در ضمن نمی خوام از پیاگاه داده مثل sql استفاده کنم . آیا امکان پذیر است ؟

Saber_Fatholahi
جمعه 22 دی 1391, 00:08 صبح
عزیز کاری به sql نداشته باش گفتم که رس نداشتم اطلاح کرده بذارم توی سایت شرمنده.

این واسه یه نرم افزار دبیرخونه بود که کداش خیلی در همه، سربرگ و ... همه رو از دیتابیس می خونه حتی فایل ورد،

واسه الحاق امضا که خیلی واضحه مومن

jafarpalideh
جمعه 22 دی 1391, 07:37 صبح
من یه پیشنهاد دارم به شما دوست عزیز aradrobo
شما میتونید روی برنامه ای پست کار کنید
http://barnamenevis.org/showthread.php?209176
برنامه ی کامل و خوبیه
اگه خواستی میتونی روش کار کنی تا اینکه از صفر شروع کنی
البته اتوماسیون نیست ، فقط گردشه مکاتباته ولی تقریبا کامله

aradrobo
جمعه 22 دی 1391, 09:39 صبح
من یه پیشنهاد دارم به شما دوست عزیز aradrobo
شما میتونید روی برنامه ای پست کار کنید
http://barnamenevis.org/showthread.php?209176
برنامه ی کامل و خوبیه
اگه خواستی میتونی روش کار کنی تا اینکه از صفر شروع کنی
البته اتوماسیون نیست ، فقط گردشه مکاتباته ولی تقریبا کامله

من تاحالا با sql کار نکردم .

1saeedkamalzare
جمعه 22 دی 1391, 16:07 عصر
سلام دوست عزیر دقیقا بگو چی می خوای تا جایی که بتونم در خدمت هستم

1saeedkamalzare
جمعه 22 دی 1391, 16:16 عصر
اگه می خوای از word و Activex و این جور داستانا راحت شی کلا یه فضای عالی برای نوشتن نامه هات داشته باشی اول ببین چی می خوای بعد برو سراغ کامپوننت های آماده مثل Devexpress از Html Editor ش استفاده کن اتوماسیون هایی مثل فراگستر دقیقا از همین گزینه استفاده کردن
تازه sql بهترین DB برای این کارهاست سعی کن یاد بگیریش کد های زیادی برا یادگیریش وجود داره

khokhan
شنبه 23 دی 1391, 16:35 عصر
عزیز کاری به sql نداشته باش گفتم که رس نداشتم اطلاح کرده بذارم توی سایت شرمنده.

این واسه یه نرم افزار دبیرخونه بود که کداش خیلی در همه، سربرگ و ... همه رو از دیتابیس می خونه حتی فایل ورد،

واسه الحاق امضا که خیلی واضحه مومن


سلام مهندس

اگه می شه یه کمی راجع به این کدهاتون ونحوه به کارگیری اونها توضیح مختصری بدین

من مشکل رفرنس ها رو حل کردم اما باز به چندتا از اونها ایراد می گیره مثلا همین fileName