PDA

View Full Version : آموزش: خواندن فایل excel و ورود اطلاعات به Database



jaykob
یک شنبه 12 خرداد 1392, 22:46 عصر
سلام دوستان

برای تبدیل فایل Excel و ریختن اطلاعات به دیتابیس کمی سر درگم بودم بعد از رسیدن به نتیجه گفتم آموزش کوتاهی رو در اینجا قرار بدم تا دوستان دیگر هم استفاده کنند ;

ابتدا لازم است که فایل ها زیر را که ضمیمه کردم دانلود کرده و داخل پوشه bin کپی کنید و با راست کلیک بر روی References و انتخاب گزینه Add References از تب Browse فایل های dll زیر را از پوشه bin انتخاب کنید

LinqToExcel.dll
Remotion.Data.Linq.dll


فایل excel خود را مطابق شکل زیر ایجاد و نام برگه را MySheet قراردهید :.


105055


برای ادامه یک دیتابیس به نام excel و یک جدول به نام tbl_data ایجاد کرده ایم مطابق شکل زیر :.


105057

یک صفحه جدید به همراه یک Button به پروژه خودتون اضافه کنید و کد زیر را به آن اضافه کنید :.



class xlsdata
{
public string name { get; set; }
public string family { get; set; }
public int id { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
string pach = @"H:\Asp.NET\My Program\LINQTOEXCEL\2\linqtoexcel2\linqtoexcel2\ex cel\myexcel.xlsx";
var excelData = new ExcelQueryFactory(pach);
var data = from x in excelData.Worksheet<xlsdata>("MySheet")
select x;

DataClassesDataContext db = new DataClassesDataContext();

foreach (var d in data)
{

db.tbl_datas.InsertOnSubmit(new tbl_data
{
id = d.id,
name = d.name,
family = d.family
});

}
db.SubmitChanges();

Response.Write("Ok!");

}



توجه کنید که کلاس LinqToExcel فراخوانی شده باشد :.


using LinqToExcel;


توضیح در رابطه با کد مورد نظر :.




class xlsdata
{
public string name { get; set; }
public string family { get; set; }
public int id { get; set; }
}



در این قسمت کد ، کلاسی به نام xlsdata با property های مورد نظر ایجاد کردیم .




string patch = @"H:\Asp.NET\My Program\LINQTOEXCEL\2\linqtoexcel2\linqtoexcel2\ex cel\myexcel.xlsx";
var excelData = new ExcelQueryFactory(patch );
var data = from x in excelData.Worksheet<xlsdata>("MySheet")
select x;



در این بخش ، یک متغییر به نام patch ایجاد می کنیم و آدرس فایل اکسل مورد نظر را می دهیم و کوئری data هم مقادیر برگه MySheet را بر می گرداند .



DataClassesDataContext db = new DataClassesDataContext();

foreach (var d in data)
{

db.tbl_datas.InsertOnSubmit(new tbl_data
{
id = d.id,
name = d.name,
family = d.family
});

}
db.SubmitChanges();

Response.Write("Ok!");




قطعه کد بالا هم مقادیر کوئری data را خوانده و وارد دیتابیس می کند.

skmr_ae
دوشنبه 13 خرداد 1392, 11:15 صبح
سلام
عکسش هم امکان پذیر هست که ار بانک در اکسل وارد بشه؟؟؟
ممنون میشم بگید

jaykob
دوشنبه 13 خرداد 1392, 11:23 صبح
سلام
عکسش هم امکان پذیر هست که ار بانک در اکسل وارد بشه؟؟؟
ممنون میشم بگید

سلام

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


protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();

Response.AddHeader("content-disposition", "attachment;filename=Report.xls");

Response.Charset = "";

Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());

Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{


}


موفق باشید

sepide_68_91
دوشنبه 13 خرداد 1392, 18:13 عصر
سلام

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


protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();

Response.AddHeader("content-disposition", "attachment;filename=Report.xls");

Response.Charset = "";

Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());

Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{


}


موفق باشید

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

jaykob
دوشنبه 13 خرداد 1392, 19:14 عصر
سلام
دوست عزیز برا حالت عکس اموزش نمونه ای ندارید لطف کنید و بذارید...

سلام

این کدی گذاشتم دقیقا همین کار رو انجام می ده از بانک به اکسل هست . مشکل شما کجا هست ؟

sepide_68_91
سه شنبه 14 خرداد 1392, 10:20 صبح
سلام
چطوری اکسل رو به گرید بیارم...
ممنون

ali_mnkt
سه شنبه 14 خرداد 1392, 14:18 عصر
سلام

بحث جالبی هست من هم یک سئوال دارم . فرض کنید یک فایل Excel داریم که 10 ستون داره اما ما نمی خواهیم اطلاعات تمام ستون ها رو در دیتابیس بریزیم و فقط می خوایم که 3 تا از ستون هاشو انتخاب کنیم و بگیم دقیقن هر ستون Excel در کدوم ستون از جدول پایگاه دادمون قرار بگیره . آیا می شه همچین کاری انجام داد ؟ و چگونه ؟ با تشکر

ali_mnkt
چهارشنبه 15 خرداد 1392, 23:16 عصر
نبود کسی راهنمایی کنه ؟

skmr_ae
پنج شنبه 16 خرداد 1392, 10:27 صبح
کسی نمیدونه چطور به گرید بیاریم و بریزیم در بانک؟

jaykob
پنج شنبه 16 خرداد 1392, 12:00 عصر
نبود کسی راهنمایی کنه ؟

سلام

دوست عزیز شما کافیه که ستون هایی رو که نیاز دارید property هاتون رو تعریف کنید به طور مثال در اینجا شما فقط به Name نیاز دارید فقط این property رو تعریف کنید از نظر املائی باید مطابق ستون باشد و از همین فیلد در دریتابیس و یا ... استفاده کنید

موفق باشید


سلام
چطوری اکسل رو به گرید بیارم...
ممنون

سلام

شما تنها کافیه که کوئری data را به عنوان datasource گرید ویو قراردهید و با gridview بایند کنید

i3ahaar
یک شنبه 16 تیر 1392, 20:15 عصر
یه سوال ؟ اگه فایل اکسلی که قراره بریزیم داخل دیتابیس دارای چند تا sheet باشه باید چیکار کرد ؟

jaykob
دوشنبه 17 تیر 1392, 20:47 عصر
یه سوال ؟ اگه فایل اکسلی که قراره بریزیم داخل دیتابیس دارای چند تا sheet باشه باید چیکار کرد ؟

سلام دوست عزیز

شما می تونید برای هر sheet یک کد بزنید و نام رو در این بخش تغییر بدید :

excelData.Worksheet<xlsdata>("MySheet")

ویا اینکه یک آرایه داشته باشید و لیست sheet ها داخل اونها باشه و یک for بزارید که همه Sheet ها خونده بشه

موفق باشید

raha_1362
چهارشنبه 01 مهر 1394, 14:22 عصر
من زمان اجرا با خطای could not load file or assembly 'log4net... مواجه می شم دلیلش چیه ؟؟؟

EnKamran
جمعه 10 مهر 1394, 20:43 عصر
فایل LinqToExcel که برای دانلود گذاشتن قدیمی شدن و از ورژن قدیمی log4net استفاده میکنند شما از دستور زیر توی VisualStudio استفاده کن (توی Nuget Package Manager Consol)
Install-Package LinqToExcel
و
Install-Package Remotion.Data.Linq