PDA

View Full Version : سوال: انتقال اطلاعات اکسل به ارایه



mohammad1314
پنج شنبه 12 فروردین 1395, 09:42 صبح
سلام دوستان.

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

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

(در ضمن در نظر دارم که از کاربر اطلاعاتی راجع به range و تعداد ستون گرفته نشه و فایل اکسلم با هر مقدار اطلاعات، در آرایه ذخیره کنه. اگر هم امکان این روش نبود، ممنون میشم همین روش گرفتن تعداد ستون رو بگین)


ممنون میشم اگه کمکم کنین.!
با تشکر

ژیار رحیمی
پنج شنبه 12 فروردین 1395, 12:43 عصر
http://csharp.net-informations.com/excel/csharp-excel-oledb.htm

mohammad1314
پنج شنبه 12 فروردین 1395, 18:06 عصر
http://csharp.net-informations.com/excel/csharp-excel-oledb.htm


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

ژیار رحیمی
پنج شنبه 12 فروردین 1395, 22:01 عصر
اگر لینک گذاشته شده رو مطالعه کرده باشی نتیجه کویری یک دیتاتیبل میباشد که میتونی بصورت زیر یک دیتاتیبل راتبدیل به آرایه کنی

var dt = new DataTable();
dt.Columns.Add("Id", typeof(string));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add("1","name1");
dt.Rows.Add("2", "name2");
dt.Rows.Add("3", "name3");
dt.Rows.Add("4", "name4");
//تبدیل ستون اول دیتا تیبل به آرایه
var arrray = dt.Rows.OfType<DataRow>().Select(k => k[0].ToString()).ToArray();


//هر سطر از دیتاتیبل در یک درایه از آرایه قرار میگیرد.جدا کننده ستون سمیکالن
var array2 = new ArrayList();
foreach (DataRow dataRow in dt.Rows)
array2.Add(string.Join(";", dataRow.ItemArray.Select(item => item.ToString())));


روش دیگر برای تبدیل

public ArrayList ConvertDataTableToArrayList(DataTable dtTable)
{
var myArrayList = new ArrayList();
for (int i = 0; i <= dtTable.Rows.Count - 1; i++)
for (int j = 0; j <= dtTable.Columns.Count - 1; j++)
myArrayList.Add(dtTable.Rows[i][j].ToString());
return myArrayList;
}

mohammad1314
یک شنبه 15 فروردین 1395, 14:54 عصر
متشکر.
من راه حل دوم رو اجرا کردم و خواستم محتویات ارایه رو در لیست باکس بریزم. کد زیر رو نوشتم که ارور داشت.
دلیلش چیه؟؟؟

foreach (DataRow c in dt.Rows)
listBox1.Items.Add(ConvertDataTableToArrayList(c)) .ToString();