PDA

View Full Version : خطا در خواندن محتویات فایل اکسل و ذخیره آن در بانک !



behnam-soft
دوشنبه 25 شهریور 1392, 20:50 عصر
سلام خدمت دوستان
من یه برنامه در رابطه با خوندن محتویات فایل اکسل دارم، کدش رو می ذارم اینجا هم دوستان استفاده کنن هم مشکلی که خودم باهاش دارم دوستان کمک کنن برطرفشه !!!
من توسط قطعه کد زیر (که متاسفانه خیلی دقیق نمی تونم تجزیه تحلیل کنم و تغییری داخلش ایجاد کنم !) می تونم محتویات یه فایل اکسل رو بخونم و در یک تکس باکس نمایش بدم.

var fileName = @"e:\1.xlsx";
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedType s=Text\"";
var conn = new OleDbConnection(connectionString);
conn.Open();
// var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSc hemaGuid.Tables, new object[] { null, null, null, "person" });
var cmd = conn.CreateCommand();
// cmd.CommandText = "SELECT * FROM [" + sheets.Rows[1]["A"].ToString() + "] ";
cmd.CommandText = "SELECT * FROM [Sheet1$]";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);

خب، یه چندتایی مشکل خیلی کوچولو دارم که :
1- نمی دونم از چه طریقی، باید تعداد سطر های فایل رو به دست بیارم، البته میدونم که محتویاتش داخل adapter ذخیره شدن (اگر اشتباه نکنم !) اما هیچ متدی نداره که بشه تعداد سطر ها رو بدست بیارم ! از چه کدی باید استفاده کنم ؟

2- فایل اکسلی که من دارم، شامل یه ستون برای اسم کشور ها، یه ستون برای شهر ها، و یه ستون برای جمعیت و یه ستون هم برای درآمد ماهانه ست.
خب همونطور که تا به اینجای کار معلومه، اسم کشور و شهر همیشه در بانک ثابت هست اما جمعیت و درآمد هر ماه تغییر می کنه ! و ما تمامی این اطلاعات رو هر ماه از طریق فایل اکسل وارد برنامه مون می کنیم.حالا من می خوام این کار اتوماتیک انجام بشه. کوئری که من نوشتم اینه :

INSERT INTO tblkeshvar(jamiat, daramad)
VALUES ( @jamiat, @ daramad)
where (keshvar=@keshvar and shahr=@shahr)

من میام اول از طریق کد زیر:

keshvar = ds.Tables[0].Rows[i][0].ToString();
shahre = ds.Tables[0].Rows[i][1].ToString();
daramad = Int64.Parse(ds.Tables[0].Rows[i][2].ToString());
jamiat = Int64.Parse(ds.Tables[0].Rows[i][3].ToString());
tblkeshvarTableAdapter.myInsert(keshvar, shahr, daramad, jamiat);

اسم کشور و شهر و جمعیت و درآمد رو از فایل اکسل می خونم و میریزم تو متغیر ها ، اما زمانی که می خوام وارد بانک کنم، ایراد میگیره ! خودم فکر می کنم مشکل از کوئری که نوشتم باشه اما خب من راه دیگه ای به ذهنم نمی رسه !!! مشکل چیه ؟؟؟ از چه کوئری باید استفاده کنم ؟؟؟
3- الان که فایلم (که فقط برای تست کردن هست) دقیقا 4 رکورد بیشتر نداره، برنامه یه کوچولو با تاخیر اجرا میشه ! وای به حال اینکه قرارباشه هر ماه 700 تا رکورد رو بخواد بخونه و در بانک ذخیره کنه !!! این مشکل رو چطوری برطرف کنم ؟؟؟ چون می دونم چند ثانیه ای برنامه هنگ میکنه تا کارش با فایل اکسل تموم بشه !!! البته من کار با ترد و این چیزا رو هم بلد نیستم !!!
ضمنا من خوندن و نوشتن در بانک رو به روش ویزاردی انجام دادم !!!

behnam-soft
سه شنبه 26 شهریور 1392, 08:41 صبح
دوستان كسي در اين زمينه كار نكرده ؟؟؟

behnam-soft
پنج شنبه 28 شهریور 1392, 12:09 عصر
دوستان واقعا اینقدر سوال من سخته که بعد از چند روز هنوز کسی جواب نداده ؟

behnam-soft
جمعه 29 شهریور 1392, 11:09 صبح
واقعا کسی نمی دونه باید چیکار کرد ؟

behnam-soft
جمعه 29 شهریور 1392, 23:21 عصر
دوستان و مدیران این تالار، واقعا خسته نباشید !!!
خودم راهکارشو پیدا کردم ! راهش استفاده از یه دیتا تیبل بود!

mousa1992
شنبه 30 شهریور 1392, 00:47 صبح
باید بهت تبریک بگم کار درستو انجام دادی اخرش به این نتیجه میرسی که کسی جز خودت نمیتونه مشکلاتتو حل کنه تا ی حدی دوستان کمک میکنن بعضی مشکلات که به ظاهر کار زیادی میبرن و بعضا هم واقعا کار میبره از حوصله خارجه به همین خاطر جوابی گرفته نمیشه (اینجا به قولا قراره ماهی گیری یاد بدیم )

behnam-soft
شنبه 30 شهریور 1392, 14:28 عصر
باید بهت تبریک بگم کار درستو انجام دادی اخرش به این نتیجه میرسی که کسی جز خودت نمیتونه مشکلاتتو حل کنه تا ی حدی دوستان کمک میکنن بعضی مشکلات که به ظاهر کار زیادی میبرن و بعضا هم واقعا کار میبره از حوصله خارجه به همین خاطر جوابی گرفته نمیشه (اینجا به قولا قراره ماهی گیری یاد بدیم )
جالبیه کار اینجاست که دوستان تا همون " ی حدی " هم کمک نکردن و من به خاطر همین مشکل کوچولو 1 هفته معطل بودم !!! البته وظیفه ای بر عهده کسی نیست که بیاد جواب بده اما من فکر می کنم دادن حتی یه ایده کوچیک هم می تونه کار راه انداز باشه !!! ضمن اینکه واقعا این مسئله واسه کسی که کمی سی شارپ کار کرده باشه نباید چیز خاصی باشه . . .

behnam-soft
شنبه 30 شهریور 1392, 19:34 عصر
الان یه مشکل کوچولویی که بهش برخوردم اینه که کوئری که نوشتم درست کار نمی کنه و برنامه خطامیگیره !
اگر قرار بر این نباشه که دوباره سوالم بی جواب بمونه، مشکل کوئری که نوشتم چیه ؟(کوئری در پست اول نوشته شده )

mousa1992
شنبه 30 شهریور 1392, 23:33 عصر
سلام
لطفا خطا رو قرار بدین

و بد نیست که ی سر به اینجا (http://msdn.microsoft.com/en-us/library/office/gg575571.aspx) بزنی

behnam-soft
یک شنبه 31 شهریور 1392, 17:20 عصر
با تشکر از آقا موسی عزیز، خودم بالاخره دیشب بعد از کلی سوزوندن سلول خاکستری و اینا، موفق به حل کل خطاها و مشکلات شدم ! البته تا به اینجای کار !!!
فکر می کنم برنامه ای شد که خیلی به درد دوستان بخوره، البته اگر سروکارشون با این فایل ها باشه، خیلی کار راه انداز هست، من می خوام یکم دیگه رو برنامه کار کنم، انشااله تکمیل تر که شد، یه آموزش می ذارم دوستان هم استفاده کنن.