PDA

View Full Version : سوال: وارد كردن مجموعه اي از سطر و ستون ها از منبع خارجي به Datagridview



mostafa_shoakry
چهارشنبه 23 تیر 1389, 22:29 عصر
من سوالمو كامل ميكنم:
اگه نرم افزار Spss رو ديده باشين مي توان تعدادي سطر و ستون رو از نرم افزاري همچون Excel كپي كرد ودر مجموعه سلول هاي Spss ريخت.
حالا من مي خوام به عنوان مثال 10سطرو 3 ستون حاوي اطلاعات رو از Excel كپي كنم و در DatagridView با همان صورت 10سطرو3ستون وارد كنم.
اين عمل مي تونه كپي يا هر روش ديگري باشه.اگه مي شه كمكم كنين.با تشكر از همه دوستان.

peikesms123
پنج شنبه 24 تیر 1389, 11:01 صبح
سلام چرا عصبانی شدید. همیشه صبر داشته باشید.
اگه بخوای از تو اکسل کپی کنی میتونی از کد زیر استفاده کنی. البته شاید بهینه نباشه و راه حل بهتری هم باشه ولی با 10 دقیقه کد نوشتن بهتر از این نمیشه.

// جدا کردن هر سطر از متن داخل کلیپ برد
string [] arrayStrRows=Clipboard.GetText().Split('\n');
// دو متغییر برای دخیره کردن تعداد سطرها و ستون ها
int intColumns = 0, intRows = arrayStrRows.Length;
// پیدا کردن تعداد ستون ها
foreach (string str in arrayStrRows)
{
string[] arrayStrColumns = str.Split('\t');
if (arrayStrColumns.Length > intColumns)
{
intColumns = arrayStrColumns.Length;
}
}

// اضافه کردن ستون ها به دیتا گرید
for (int i = 0; i < intColumns;i++ )
{
dataGridView1.Columns.Add("Column" + i, "Column" + i);
}

// اضافه کردن اطلاعات هر سطر
for (int i=0;i<arrayStrRows.Length;i++)
{
dataGridView1.Rows.Add();
string[] arrayStrColumns = arrayStrRows[i].Split('\t');
for (int j = 0; j < arrayStrColumns.Length; j++)
{
dataGridView1.Rows[i].Cells[j].Value = arrayStrColumns[j];
}
}

mostafa_shoakry
پنج شنبه 24 تیر 1389, 15:13 عصر
ممنون دوست عزیر کار کرد.
حالا دو سوال دیگه دارم :اولی اینه که فرض کن می خواهیم اطلاعات را به صورت جداگانه در ستون های مختلفی وارد کنیم، حالا باید چی کار کنیم؟ اگه به شکل نگا کنی می فهمی منظورم چی یه.
و سوال دوم این که فرض کن اطلاعات درون یه WORD یا در یک text قرارداره ومی خواهیم این اطلاعات رو وارد کنیم حالا چی؟:متفکر:
خیلی ممنون میشم اگه جواب بدی.
thanx

peikesms123
پنج شنبه 24 تیر 1389, 17:14 عصر
خواهش میکنم.
جواب سوال1:
چون میدونید که همیشه 3 ستون وجود دارد(نام، نام خانوادگی، تلفن) دیگه نیازی نیست که تعداد ستون ها را به دست بیاریم و کار یه کم راحت تر میشه. همون طوری که توی عکس هست سه ستون از قبل طراحی کنید و از کد زیر استفاده کنید.

// جدا کردن هر سطر از متن داخل کلیپ برد
string [] arrayStrRows=Clipboard.GetText().Split('\n');
// اضافه کردن اطلاعات هر سطر
for (int i=0;i<arrayStrRows.Length;i++)
{
dataGridView1.Rows.Add();
string[] arrayStrColumns = arrayStrRows[i].Split('\t');

// توجه کیند که شرط حلقه تا سه بیشتر نیست
// یعنی همان تعداد ستون ها
int intColumns=((arrayStrColumns.Length > 3) ? 3 : arrayStrColumns.Length);
for (int j = 0; j <intColumns ; j++)
{
dataGridView1.Rows[i].Cells[j].Value = arrayStrColumns[j];
}
}
سوال 2 هم نامفهوم بود. اگه منظور شما فقط یه کپی باشه و ربطی هم به رکورد نداشته باشه خیلی ساده است. اگه بیشتر توضیح بدهید شاید بتونم کمکتون کنم.

mostafa_shoakry
پنج شنبه 24 تیر 1389, 21:22 عصر
اولا از شما به خاطر انتقال تجربیاتتون تشکر می کنم.
راستش ما قرار یه برنامه انبار داری بنویسیم. تو این برنامه قراره مقداری اطلاعات از قبیل نام کالاها، مقدارشون، قیمت هاشون و ... را وارد کنیم. تو این برنامه فرض بر این شده است که انبار دار قرار است این اطلاعات را به صورت تک به تک وارد کنه. حالا اگه یه شرکتی همین اطلاعات رو در قالب یک فایل text (که می تونه wordویا excel ویا ... باشه) داشته باشه و تعداد شون بیش از چند صد تا و یا بیش از هزار باشه ، واضحه که ثبت کردن چنین اطلاعاتی خیلی خیلی سخت می شه.
حالا می خواهیم یک فرم دیگر درست کنیم که در این فرم انباردار(کاربر) اطلاعات را به صورت دسته ای وارد کنه.
حالا موندیم که وارد کردن این اطلاعات چطور باید باشه. البته اینو بگم که به لطف شما ، یک روشی رو یاد گرفتیم. (ارسال از طریق excel به Datagridview ). این فرض رو هم داریم که اطاعات در قالب فایل word هست و می خواد این اطلات را data grid view اضافه کنه. راهه چاره چیست؟
البته ببخشید که متن یکم طولانی شد.!!!!!!:خجالت: