PDA

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



darkwish
شنبه 02 اردیبهشت 1391, 20:16 عصر
سلام دوستان
سایتی طراحی کردم که تعداد فیلدهایی که داخل یکی از صفحاتم خیلی زیاده و صفحه با سرعت اینترنت بالا 2 دقیقه ای طول می کشه بیاد بالا تا کاربر اطلاهات وارد کنه حالا می خوام به جای این صفحه یه پیج دیگه بزارم که فقط یه button داره با یک grid که کاربر که button رو زد اطلاعات رو از فایل اکسل بخونه و بریزه توی دیتا بیس و همزمان کاربر هم اون اطلاعات رو توی گرید ببینه می شه کمک کنید.
اگه ممکنه کد بزارید با C# نوشتم .
ممنون از راهنمایی تون

hamid_shrk
شنبه 02 اردیبهشت 1391, 20:23 عصر
نحوه خوندن از execl کاملا شبیه خوندن از یک جدول تو دیتا بیس هست که تو این مقاله توضیح داده شده :
http://www.codeproject.com/Tips/311014/READ-EXCEL-IN-ASPNET
ولی سرعتش از دیتابیس یکم پایین تره فکر میکنم.

ahmad156
شنبه 02 اردیبهشت 1391, 20:26 عصر
دوست عزیز اول شما باید accessdatabaseengin رو نصب کنین
این هم کد vb

Dim ext As String()
ext = FileUpload1.PostedFile.FileName.Split(".")
If ext(ext.Length - 1) = "xls" Or ext(ext.Length - 1) = "xlsx" Then
Dim fileName As String
fileName = Path.GetFileName(FileUpload1.FileName)
FileUpload1.SaveAs(Server.MapPath("excel/") + fileName)
Dim connectionString As String
If ext(ext.Length - 1) = "xls" Then
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel/").ToString() + fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"
ElseIf ext(ext.Length - 1) = "xlsx" Then
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("excel/").ToString() + fileName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=2'"
End If
Dim da As New OleDb.OleDbDataAdapter
Dim conn As New OleDb.OleDbConnection(connectionString)
Dim command As New OleDb.OleDbCommand(String.Format("SELECT * FROM [Sheet1$]"))
command.Connection = conn
da.SelectCommand = command
Dim ds As New DataSet
da.Fill(ds)


که با یه fileupload ابتدا فایل اکسل رو دریافت میکنه و بعد بررسی میکنه که ورژن اون 2007 یا 2003 هست که connection هر کدوم فرق میکنه

hamid_shrk
شنبه 02 اردیبهشت 1391, 20:30 عصر
دوست عزیز اول شما باید accessdatabaseengin رو نصب کنین

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

darkwish
شنبه 02 اردیبهشت 1391, 21:25 عصر
نحوه خوندن از execl کاملا شبیه خوندن از یک جدول تو دیتا بیس هست که تو این مقاله توضیح داده شده :
http://www.codeproject.com/Tips/311014/READ-EXCEL-IN-ASPNET
ولی سرعتش از دیتابیس یکم پایین تره فکر میکنم.

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

hamid_shrk
شنبه 02 اردیبهشت 1391, 21:36 عصر
دوست عزیز دقت کنید ، فایل اکسلی که میخونید باید تو فرمت درست باشه ، مثلا تو این دستور :


OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);

میاد ستونهای Sheet1 رو میخونه ، یعنی اگه اسم شیت Sheet1 نباشه نمیتونه بخونه ، پس عملا بیکاربر میشه براتون.
ولی روشش اینه که شما بذارید فایل رو آپلود کنه کاربر وبعد اونو تو یه پوشه ذخیره کنید و با آدرس دهی بخونیدش اما میگم که با حتما تو قالب خاصی باشه.