لدي سيرفر ويندوز 2008ويوجد فيه بيانات على شيت اكسل 2007
وفي الجدول ارقام تتحدث بشكل آلي هل يمكن تحديثها في الويب بتقنية asp بشرط يكون التحديث في نفس اللحظة0
اتمنى من المحترفين المساعدة
لدي سيرفر ويندوز 2008ويوجد فيه بيانات على شيت اكسل 2007
وفي الجدول ارقام تتحدث بشكل آلي هل يمكن تحديثها في الويب بتقنية asp بشرط يكون التحديث في نفس اللحظة0
اتمنى من المحترفين المساعدة
يمكن التحديث في أي وقت تشاء ولكن هل تقصد asp العادية أم asp.net
إذا كانت الثانية فبواسطة عناصر ajax
إستخدم منها updatepanel و script manager و Timer
الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد
KV2010 كتب:يمكن التحديث في أي وقت تشاء ولكن هل تقصد asp العادية أم asp.net
إذا كانت الثانية فبواسطة عناصر ajax
إستخدم منها updatepanel و script manager و Timer
اللغة asp.net
هل ممكن المساعدة
لك رسالة على الايميل
السلام عليكم :)
أخي المستفيد.. إنه نفسه أنت الذي راسلتني على الإيميل؟!!؟
عيب يا راجل.. لماذا لم ترد عليّ بعدما استجبت لك؟
ظننت أننا أصبحنا أصدقاء!
المهم جزء كبير من المشكلة تم حلها، والملف المرفق يحتوي على مجلد موقع فيه ثلاث ملفات من بينها ملف الأكسل..
جرب تفتح المجلد كموقع عبر الإكسبرشن ويب 2 أو 3 أو 4
أو الفجوال ستوديو 2008، 2010
وبعدها قم بمعاينة المشروع...
ستلاحظ عند فتح الصفحة جدول فيه رقم واسم ووظيفة، طبعاً إذا دخلت على ملف الأكسل وحدثته يدوياً فسيتم التحديث بتلقائية داخل الصفحة..
وإذا فتحت الملف في بيئة التصميم ستلاحظ أني استخدمت سكربت مانجر و updatepanel وبداخلها الجدول الخاص بالبيانات وأداة Timer حيث خاصية interval = 1000
وهو ما يمكن أن يعني التالي:
قم بتحديث جميع العناصر بداخل قطاع التحديث كل ثانية واحدة!
ومن ذلك تستطيع استنتاج أنه لو وضعت قيمة 500 سيكون التحديث كل نصف ثانية! تستطيع وضعها على 1 ولكن لا أضمن لك النتائج.. أعتقد أن كل ثانية سيكون أمراً متعباً على السرفر حتى ولو كان 2008، وأعتقد أن أفضل مدة للتحديث قد تكون كل 10 ثوان أو 20 ثانية! (طبعاً التحديث سيستنزف موارد الاستضافة، فكلما كانت المدة أكبر ومعقولة كلما حافظت على مواردك من الاستنزاف السريع :))
===================
حسناً إذن.. هذا فيما يتعلق بالصفحة الواجهة.. لننتقل إذن إلى صفحة الكود..
ستجد فيها الأسطر التالية:
Imports System.Data
Imports System.Data.OleDb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim sConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & Server.MapPath("data.xlsx") _
& ";" & "Extended Properties=Excel 12.0;"
'; Create the connection object
Dim oledbConn As OleDbConnection = New OleDbConnection(sConnectionString)
Try
' Open connection
oledbConn.Open()
' Create OleDbCommand object and select data from worksheet Sheet1
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn)
' Create new OleDbDataAdapter
Dim oleda As OleDbDataAdapter = New OleDbDataAdapter()
oleda.SelectCommand = cmd
' Create a DataSet which will hold the data extracted from the worksheet.
Dim ds As DataSet = New DataSet()
' Fill the DataSet from the data extracted from the worksheet.
oleda.Fill(ds, "Employees")
' Bind the data to the GridView
GridView1.DataSource = ds.Tables(0).DefaultView
GridView1.DataBind()
Catch
Finally
' Close connection
oledbConn.Close()
End Try
End Sub
End Classطبعاً أهم ما في العملية كلها السطرين الأولين، حيث وظيفتهما استدعاء مكتبة قواعد البيانات التي تدعم فتح ملفات الإكسل (وملفات قواعد بيانات أخرى)
حيث ستلاحظ في السطر السابع اسم الملف الخاص بالبيانات، حيث تستطيع استبداله باسم الملف الهدف!
==============
المشاكل التي واجهتها، والتي ربما تواجهك:
1- حاولت استبدال اسم الملف بالمسار الكلي للملف فلم يجدي نفعاً.. واظررت بعدها إلى إضافة عبارة server.mapPath حتى يستطيع الموقع معرفة المسار الفعلي للملف من على السرفر.. أي أنه لو كان ملف البيانات بداخل مجلد فتستطيع الاكتفاء بكتابة اسم المجلد ثم اسم الملف كمسار مثل app_data/data.xls
2- يجب أن تركز على اسم الورقة التي تحمل البيانات التي تريد عرضها، فلو كان الأوفس الذي تستخدمه لإنشاء ملف الأكسل عربي فسيسمي الورقة الأولى (ورقة1$) بدلاً من (Sheet1$).. والسطر الذي يتحدث عن هذه المعلومة هو 15
3- عبارة Catch الموجودة في السطر السابع قبل الأخير مفيدة عندما تريد عمل نقطة توقف فيها BeakePoint حيث تحتفظ برسائل الخطأ عند حوثها، مما يساعد على معرفة الأخطاء التي قد تحصل ضمن جملة try في السطر 11.
4- يجب أن تتأكد أن اصدارة الدوت نت على السرفر (حتى ولو كان 2008) هي 3.5، حيث تتواجد فيها مكتبات الآجكس (سكربت مانجر، وقطاع التحديث، والموقت).
==============
المراجع التي استخدمتها:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=138
وهي مقالة رائعة تستخدم الكود السابق، لكني قمت كما ترى ببعض التعديلات هنا حيث تصبح العملية كلها في ملف واحد بدلاً من استخدام أكثر من ملف!
==============
حسناً إذن..
مع تمنياتي لك بالتوفيق والنجاح
والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة AmeenSnw في 24 مارس 2011 في 23:26
الف شكر لك اخي الكريم كفييت ووفيت واعتذر فالنت عندي فيه مشكلة بسبب انتقالي وسفري من مدينة لاخرى
لك رسالة على الخاص
وراح اجرب الملف وارد عليك