PDA

View Full Version : سوال: ذخیره اطلاعات ورد word در بانک اطلاعاتی



forodo
یک شنبه 31 شهریور 1392, 17:01 عصر
سلام
من برنامه ای نوشتم که داخل اون با زدن دکمه مربوطه برنامه word یا exel باز می شود.
حالا وقتی که کاربر تمام اطلاعاتش رو وارد کرد که مثلاً شامل جدول یا عکس یا نوشته ها به صورت های مختلف و با رنگهای مختلف می باشد، چه طور و کجا باید اونها رو ذخیره کنم.
می شود توی بانک اطلاعاتی آنها را ذخیره کرد.
اگر می شود کد مربوط به آن چگونه است؟
اگر می شود بعد از فراخوانی اطلاعاتم آیا به همان شکل که ذخیره شده می آید یا خیر؟
لطفاً راهنمایی کنید.
با تشکر فراوان از تمامی زحماتتون.
البته اینم بگم که تو سایت گشتم ولی همچین چیزی پیدا نکردم.

behnam-soft
یک شنبه 31 شهریور 1392, 18:00 عصر
سلام، اگر فایلی که می خوای بریزی تو دیتا بیست، فایل اکسل باشه، من می تونم کمکت کنم،

forodo
یک شنبه 31 شهریور 1392, 18:13 عصر
هم ورد و هم اکسل رو نیاز دارم.
اگه شما exel رو بگید ممنون می شم.
برنامه من تحت ویندوز هستش ولی دیتابیسش روی اینترنت قرار داره.
به همین دلیل می خوام وقتی کارش با اکسل تموم شد یه جوری اطلاعات داخل دیتابیس وارد شه تا فرد دیگری که مثلاً جای دیگری در ایران هستش بتونه اونو فرواخوانی کند.

behnam-soft
یک شنبه 31 شهریور 1392, 18:24 عصر
اگر بتونی تقریبا یه 2 روزی صبر کنی، می خوام یه آموزش ویدئویی توپ تو این زمینه درست کنم، اگر هم نمی تونی که به تاپیکی که خودم زدم مراجعه کن،سوالی بود مطرح کن در سطح سواتم جواب می دم!
http://barnamenevis.org/showthread.php?419684-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%85%D8%AD%D8%AA%D9%88%DB%8C%D8%A7%D8%AA-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D9%84-%D9%88-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%A2%D9%86-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-!

forodo
یک شنبه 31 شهریور 1392, 18:37 عصر
می تونم صبر کنم.
فقط وقتی که تموم بشه از کجا میشه فهمید که در سایت قرار گرفته؟
در ضمن اینم بگم که حسابی ایول داری که داری آموزش ویدئویی قرار میدی.
انشاءا... همین روحیه داشته باشی و دلسرد نشی.

forodo
دوشنبه 01 مهر 1392, 19:54 عصر
کسی نیست بتونه بگه من چه جوری می تونم یه ورد رو داخل دیتابیس ذخیره کنم؟؟؟
من کامپوننتهای تلریک و دات نت بار و جنیوس و ... رو دانلود کردم ولی نمی دونم اصلاً اونا به کار من میاد یا نه؟

forodo
دوشنبه 01 مهر 1392, 21:02 عصر
واقعاً نمی شه همچین کاری انجام داد؟؟؟

behnam-soft
دوشنبه 01 مهر 1392, 21:54 عصر
در ضمن اینم بگم که حسابی ایول داری که داری آموزش ویدئویی قرار میدی.
انشاءا... همین روحیه داشته باشی و دلسرد نشی.
چون من خودم خیلی از چیزایی که یاد گرفتم، به واسطه همین ویدئوهایی بوده که کاربرا ازسراسر ایران درست کردن و برای استفاده عموم قرار دادن، لذا می خوام با درست کردن ویدئوهای مختلف و کاربردی، یه جورایی ادای دینی کرده باشم به اون کاربرا و هم اینکه بالاخره، خودم آدم وقتی یه چیزی رو می دونه، چه اشکالی داره با اون دانسته ش گره ای از کار کسی باز کنه؟

Reza_Yarahmadi
سه شنبه 02 مهر 1392, 06:16 صبح
فایل های Word و Excel با سایر فایلها (عکس و فیلم و ...) از نظر ذخیره سازی توی دیتابیس فرقی ندارند؛ همگی بصورت باینری ذخیره میشن. در مورد نحوه ذخیره سازی فایل توی دیتابیس هم به اندازه کافی مثال توی سایت هست.
در صورتی هم که میخواید روی محتوای این فایل ها جستجو انجام بدید ، (اگه از SQL Server استفاده میکنید) در مورد Ifilter و FullText Search توی سایت جستجو کنید.

forodo
سه شنبه 02 مهر 1392, 10:07 صبح
گشتم و مطالبی رو پیدا کردم ولی همه اونها با SQL هستش ولی پایگاه داده من Access.
الان کد زیر برای ذخیره عکس در دیتابیس هستش که البته درست کار می کنه.

private bool PersonalInsert()
{
ImageConverter imageConverter = new ImageConverter();
Byte[] x = ((Byte[])imageConverter.ConvertTo(pictureBox1.Image, typeof(Byte[])));
try
{
OleDbConnection objconnection =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\radman.mdb;Persist" +
" Security Info=True;Jet OLEDB:Database Password=123456");

OleDbCommand objcommand1 = new OleDbCommand();

objcommand1.Connection = objconnection;

objcommand1.CommandText = @"INSERT INTO tblPersonal(
Pic)
VALUES(
@Pic)";


objcommand1.Parameters.AddWithValue("@pic", x);

objconnection.Open();
objcommand1.ExecuteNonQuery();
objconnection.Close();
return true;
}
catch (Exception)
{
return false;
}
}


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

private void GetPersonalPicture()
{
ImageConverter imageConverter = new ImageConverter();
byte[] x;
try
{

OleDbConnection objconnection =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\radman.mdb;Persist" +
" Security Info=True;Jet OLEDB:Database Password=123456");
OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
DataSet objDataSet = new DataSet();

objDataAdapter.SelectCommand = new OleDbCommand();
objDataAdapter.SelectCommand.Connection = objconnection;

objDataAdapter.SelectCommand.CommandText = @"SELECT Pic
FROM tblPersonal
WHERE tblPersonal.Username ='" + Program.Username + "'";

objDataAdapter.SelectCommand.CommandType = CommandType.Text;

objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblPersonal");
objconnection.Close();

x = (byte[])objDataSet.Tables["tblPersonal"].Rows[0]["Pic"];

pcbCartabl.Image = (Image)imageConverter.ConvertFrom(x);


}
catch (Exception)
{

}
}


حالا اگه لطف کنین بگین کجای اینو تغییر بدم تا بشه فایل ورد رو در بانک اطلاعاتی ذخیره کرد ممنون میشم.

hi level hdd
سه شنبه 02 مهر 1392, 11:02 صبح
System.IO.File.readAllText
میشه یه فایل رو به صورت تکست یا همون آرایه خوند و مثل یه عکس ذخیره کرد یا میشه از
SreamReader , StreamWriter
استفاده کرد که میشه یه فایل و از بافر خوند
ولی بازم میگم اگر میتونی فقط متنو بگیری و ذخیره کنی و دوباره اونو بخونی از دردسر ذخیره یه فایل بزرگ(متن به همراه هدرهای خود فایل ورد) رها میشه و برنامه هم سریعتر میشه

forodo
سه شنبه 02 مهر 1392, 11:12 صبح
چه جوری میشه محتویات یه فایل ورد رو خوند و در بانک ذخیره کرد؟

hi level hdd
سه شنبه 02 مهر 1392, 11:32 صبح
چطور محتویات رو داخلش نوشتی. به همون صورت میشه از داخلش خوند
x = 10
read x
save x to database

forodo
سه شنبه 02 مهر 1392, 11:35 صبح
برای امتحان اینو نوشتم:

private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = File.ReadAllText(@"E:\Other\A\Word\Ali.doc");
}


به من اینو نشون می ده:
��ࡱ�

forodo
سه شنبه 02 مهر 1392, 11:51 صبح
حتی اینطوری هم که می نویسم و برای تست تون یه فایل متنی می ریزم به من حروفهای چرت و پرت نشون می ده که شامل اشکال و اعداد و ...

private void button1_Click(object sender, EventArgs e)
{
string path = @"c:\MyTest.txt";
string readText = File.ReadAllText(@"E:\Other\A\Word\Ali.doc");
File.AppendAllText(path, readText, Encoding.UTF8);
}

hi level hdd
سه شنبه 02 مهر 1392, 12:16 عصر
شما اگر عدد 1 رو توی یک فایل بنویسی و
ReadAllText
کنی نباید توقع نمایش عدد 1 رو داشته باشی چون الان فایل باینری داره خونده میشه

1 - یه فایل ورد رو باز کردی و توش یه محتویاتی رو نوشتی
2 - خود فایل ورد رو در بانک یا در هارد درایو به صورت فایل یا استریم ذخیره کردی
3 - می بایست یه فایل یا استریم جدید درست کنی و فایل قبلی رو توش بنویسی نه این که استریم رو در یک کنترل نشون بدی

مهندس مشکیان گفتم اگر میخواهی فقط محتویات رو ذخیره و نمایش بدی اونو تو ریچ تکس نشون بده نه یه فایلو
اگر می خواهی فایل ورد رو نمایش بدی کافیه
1 - اگه فایل رو تو بانک ذخیره کردی اونو از بانک بگیری و به صورت موقتی در هارد بنویسی و اونو اجراش کنی که مطمئنا یه فایل ورد برات باز میشه
2 - اگه فایل ورد رو از همون اول در هارد ذخیره کردی فقط اجراش کن

ولی اگر فقط محتویات رو ذخیره کردی
1 - یه فایل ورد موقتی درست کن و محتویات رو دوباره در اون بریز و نمایشش بده
2 - میتونی محتویات رو اگر فقط متن هست تو تکس باکس و هر چیز دیگه نشون بدی

forodo
سه شنبه 02 مهر 1392, 12:30 عصر
کد ریختن محتویات ورد در بانک یا کد ریختن خود فایل ورد در بانک چه جوریه؟
بانک من اکسس.

forodo
سه شنبه 02 مهر 1392, 12:44 عصر
اینو پیدا کردم:
ریختن فایل ورد در بانک اطلاعاتی:

private void button1_Click(object sender, EventArgs e)
{
string filename = @"E:\Other\A\Word\Ali.doc";

OleDbConnection dbCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Public\Documents\Database3wwwwww.m db");
OleDbCommand dbCom = new OleDbCommand("INSERT INTO Table1(aws) VALUES(@aws);", dbCon);

dbCom.Parameters.Add("@aws", System.IO.File.ReadAllBytes(filename));

dbCon.Open();
dbCom.ExecuteNonQuery();
dbCon.Close();
}


فراخوانی از بانک اطلاعاتی و ریختن محتویات آن در فایل وردی دیگر:

private void button2_Click(object sender, EventArgs e)
{
OleDbConnection dbCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Public\Documents\Database3wwwwww.m db");
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();

da.SelectCommand = new OleDbCommand();
da.SelectCommand.Connection = dbCon;
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.CommandText = @"SELECT aws
FROM Table1";

dbCon.Open();
da.Fill(ds, "ali");
dbCon.Close();
byte[] buffer;
buffer=(byte[]) ds.Tables["ali"].Rows[0]["aws"];
File.WriteAllBytes(@"C:\New Microsoft Word Document.doc", buffer);
}


حالا مشکل من اینه که میشه آیا اونو داخل یک کنترل در برنامه نشون داد ؟؟؟
اگر نشه مجبورم که وقتی کاربر ورد رو دید هنگام خارج شدن از پنجره مربوطه بگم که ورد ایجاد شده رو از روی هارد پاک کن.

forodo
سه شنبه 02 مهر 1392, 13:01 عصر
کلاً اگه کد ریختن فقط محتویات داخل ورد ( شامل جدول و عکس و متن و ...) به بانک اطلاعاتی
و
فراخوانی آنها از بانک اطلاعاتی و رختن آنها در تکست باکس رو بگی خیلی به ما حال دادی.
کارم راه می افته.

forodo
سه شنبه 02 مهر 1392, 14:13 عصر
حالا که دارم به هدفم می رسم پس چی شد؟

hi level hdd
سه شنبه 02 مهر 1392, 14:31 عصر
میشه محتویات فایل ورد رو داخل یک کنترل نگه داری نه خود فایلشو
ولی کارت که کلا تموم شده
تو داری هم ذخیره و هم نشون میدی
کافیه تو نمایشش بگی اگر کاربر ورد و بست دستور حذف فایلو خودت بنیویسی
ولی فکر میکنم فایل ورد رو بسه حتی فقط از مموری خوند و تو هارد ننوشت(برای نمایشش به کاربر)
ولی اگر هم نشد کافیه خودت حذفش کنی
System.IO.file.delete(string Addres )

forodo
سه شنبه 02 مهر 1392, 14:36 عصر
آخه می خوام جوری باشه که کسی که داره نگاه می کنه نتونه تغییری توش ایجاد بکنه.
فقط ببینه.
ولی اگه کد این که فقط محتویات ورد رو در بانک ذخیره کنه بگی اینجوری به قول خود شما هم سرعت برنامه کم نمی شه و هم حجم بانک اطلاعاتی زیاد نمی شه.

hi level hdd
سه شنبه 02 مهر 1392, 14:57 عصر
اگه قرار هست ببینه پس چطور میگید لازمه که تغییرات در بانک ذخیره بشه؟
ولی برای این کار هم میتونی سند ورد رو
Readonly
کنی

forodo
سه شنبه 02 مهر 1392, 15:05 عصر
کلاً قضیه اینه.
کاربر پنجره ارسال نامه رو باز می کنه.
روی دکمه ای کلیک می کنه تا برنامه ورد باز بشه.
هر کاری که داره داخل ورد انجام می ده.
برنامه ورد رو می بنده.
روی دکمه ای کلیک می کنه تا فایل وردی که ذخیره کرده بیاره. ( البته مسیرش رو ) محتوای فایلی که در این مسیر وجود دارد در بانک اطلاعاتی ذخیره می شود.
نامه را به شخص مورد نظر ارسال می کنه.

دریافت کننده نامه وارد پنجره مربوطه می شود.
روی نامه دوبارکلیک می کند تا محتویات آن را ببیند.
محتویاتی که داخل بانک وجود دارد فراخوانی شده در یک ریچ تکست باکس به او نمایش داده می شود.

پایان