ورود

View Full Version : مشکل در ذخیره اطلاعات فایل اکسل از دیتابیس



leila.net
دوشنبه 03 آذر 1393, 13:53 عصر
با سلام
دوستان به یه مشکلی برخوردم که واقعا دیگه فکرم به جایی قد نمیده !!!
قراره اطلاعات فایل اکسل رو بخونم و تو دیتابیس ذخیره کنم ، روش اول که به نظرم راحت تر اومد این بود فایل رو به صورت csv از کاربر دریافت کنم و از طریق streamreader اطلاعات رو بخوانم و ایمپورت کنم ولی خب تو ذخیره داده ها به مشکل encoding برخوردم که برخی از حروف فارسی رو به صورت ? نشون میداد راه حل هایی هم که تو نت پیدا کردم جواب نداد :متفکر::گریه:

روش دوم که گفتم خود فایل اکسل رو آپلود کنم و دیتاهاش رو بخونم و ... خب با این هم تا وقتی رو لوکار کار می کنم مشکلی ندارم ولی وقتی رو سرور آپلود می کنم به یه خطای نامرتبط ( از نظر خودم ) بر می خورم و می گه :


System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)

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

و این هم کد مربوط به آپلود :



private List<CustomerPartRecord> UploadFile(HttpPostedFileBase usersFile) {
Guid att = Guid.NewGuid();
string attstr = att.ToString().Substring(0, 10);
string filename = string.Empty;
List<CustomerPartRecord> list=new List<CustomerPartRecord>();
if (usersFile != null && usersFile.ContentLength != 0) {

filename = usersFile.FileName;

filename = System.IO.Path.GetFileName(usersFile.FileName);

filename = attstr &#43 (https://orchard.codeplex.com/workitem/43); filename;
usersFile.SaveAs(Server.MapPath(@"~\Modules\RS.Customers\Contents\SampleCSV\") &#43 (https://orchard.codeplex.com/workitem/43); filename);
list= importdatafromexcel(Server.MapPath(@"~\Modules\RS.Customers\Contents\SampleCSV\" ) &#43 (https://orchard.codeplex.com/workitem/43); filename , usersFile);
}

return list;
}


کدهای مربوط به Import :



public List<CustomerPartRecord> importdatafromexcel(string excelfilepath, HttpPostedFileBase usersFile)
{


string myexceldataquery = "select * from [sheet1$]";

//create our connection strings
string sexcelconnectionstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" &#43 (https://orchard.codeplex.com/workitem/43); excelfilepath &#43 (https://orchard.codeplex.com/workitem/43); ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";";


if (usersFile.ContentType == "application/vnd.ms-excel")
{

sexcelconnectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#43 (https://orchard.codeplex.com/workitem/43); excelfilepath &#43 (https://orchard.codeplex.com/workitem/43); ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";

}


var oledbconn = new OleDbConnection(sexcelconnectionstring);
var oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
oledbconn.Open();
OleDbDataReader dr = oledbcmd.ExecuteReader();


int lastMax = _customer.GetMaxAccountingCode(2, 1);
List<CustomerPartRecord> list=new List<CustomerPartRecord>();
while (dr.Read()) {
//if (Convert.ToInt64(dr[0].ToString()) > lastMax) {
list.Add(new CustomerPartRecord
{
AccountingCode = dr[0].ToString(),
AccountingName = dr[1].ToString(),
Identification = dr[2].ToString(),
Titel = dr[3].ToString(),
FirstName = dr[4].ToString(),
LastName = dr[5].ToString(),
Mobile = dr[6].ToString(),
HomePhone = dr[7].ToString(),

Phone1 = dr[8].ToString(),
Phone2 = dr[9].ToString(),
Phone3 = dr[10].ToString(),
Phone4 = dr[11].ToString(),
Advisor = dr[12].ToString(),
BirthDay = dr[13].ToString(),
Address = dr[14].ToString(),
CustomerType = dr[15].ToString(),
Job = dr[16].ToString(),

CreateDate = _clock.UtcNow.ToString(),
OwnerId = 1,
Insertion = 2,
Description = string.Empty,
Education = string.Empty
});
//}

}

oledbconn.Close();

System.IO.File.Delete(excelfilepath);
return list;
}


پیشاپیش ممنون از راهنمایی و توجه تون .

mehdin69
دوشنبه 03 آذر 1393, 14:17 عصر
مشکلی داری دیتای توی Excel رو کپی کنی و توی سایت Paste کنی؟؟؟؟