نقل البيانات من ملف csv الي الداتا جريد فيو - محمد اسماعيل - 24-09-18
السلام عليكم
عندي ملف رسائل مسحوبة من الموبايل بصيغة csv
الملف ياخذ الشكل التالي :-
Sno,Date,Contact Name,Number,SMS Body
1,الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م,Hekaya,Hekaya,خصم 50% علي تجديد الباقه الشهرية لمدة شهر كلم #10*011* للاشتراك قبل التجديد
بنقل محتوي الملف الي الداتا جريد فيو بناء علي نقل كل قيمة بعد الفاصلة , بالملف كعمود بالداتا جريد فيو
المشكلة اما مي كالاتي
1- اظهار الرسائل المرسلة بعنوان mony وهيا نفس المكان الخاص Hekaya بالفاصلة 2 بالجملة الواحدة بالملف النصي
2- حذف الرسائل التي لا تحتوي علي مرسل باسم mony او قيمتها null
3- بعض اللينات بالملف النصي تكون مكررة الرسائل او قيمتها فارغة اريد حذفها
4- التاريخ يظهر بالشكل الاتي = الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م اريد حذف at وتبديلها باسم اليوم بالشكل التالي
٢٢/٠٨/٢٠١٨ الأربعاء ٠١:٢٦:٣٠ م بدل من الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م
5- طبعا طريقة الريجيستر لا اجداستخدامها ساعدني احد الاخوة لحذف جزء من اللينات لاستخراج المبالغ المحولة الي واريدها كما هيا
الكود الي استخدمتة
مشاكلة
1- عدم حذف المكرر مباشرتا من الملف اثناء نقلة
2- عدم حذف القيم الفارغة كما سبق وذكرت
3- تعديل التاريخ كما سبق
كود :
Sub removduplicate()
On Error Resume Next
' حذف المكرر
For intI = DATAGRID_NAME.Rows.Count - 1 To 0 Step -1
For intJ = intI - 1 To 0 Step -1
If DATAGRID_NAME.Rows(intI).Cells(1).Value = DATAGRID_NAME.Rows(intJ).Cells(1).Value AndAlso DATAGRID_NAME.Rows(intI).Cells(3).Value = DATAGRID_NAME.Rows(intJ).Cells(3).Value Or DATAGRID_NAME.Rows(intI).Cells(2).Value = Nothing Then
DATAGRID_NAME.Rows.RemoveAt(intI)
End If
Next
Next
DATAGRID_NAME.Refresh()
For i As Integer = 0 To DATAGRID_NAME.Rows.Count - 1
DATAGRID_NAME.Rows(i).Cells(0).Value = (i + 1).ToString
Label2.Text = i + 1
Next
End Sub
Private Sub LIST_FILE_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles LIST_FILE.SelectedIndexChanged
On Error Resume Next
DATAGRID_NAME.Rows.Clear()
Dim txt As String = IO.File.ReadAllText(LIST_FILE.SelectedItem)
Dim arr() As String = (From m In Regex.Matches(txt, "\d+,.+") Select CStr(m.Value)).ToArray
For Each a In arr
Dim r = a.Split(",")
If Not IsDBNull(r(2)) AndAlso r(2) = "mony" Then
Dim tel As String = Regex.Match(r(4), "(?<=(من رقم)\s?\(?\s?)\d{10,}").Value
Dim code As String = Regex.Match(r(4), "(?<=(رقم العملية)\s?\(?\s?)\d{10,}").Value
Dim MONY As String = Regex.Match(r(4), "(?<=(مبلغ)\s?\(?\s?)\d{1,}").Value
Dim lst As New List(Of String)(r)
lst.Add(code)
lst.Add(tel)
lst.Add(MONY)
Me.DATAGRID_NAME.Rows.Add(lst.ToArray)
End If
Next
DATAGRID_NAME.Refresh()
removduplicate()
End Sub
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - r49 - 24-09-18
لم ترفق المشروع للتجربة على أن يشمل ملف csv مع توضيح أكثر لدور كلمة mony
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - محمد اسماعيل - 24-09-18
(24-09-18, 12:34 AM)r49 كتب : لم ترفق المشروع للتجربة على أن يشمل ملف csv مع توضيح أكثر لدور كلمة mony
صعب انقل الملف فية اكواد العملية وارقام العملاء واكواد خاصة بشرحتي
كلمة mony خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية
وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - elgokr - 24-09-18
(24-09-18, 01:37 AM)محمد اسماعيل كتب : صعب انقل الملف فية اكواد العملية وارقام العملاء واكواد خاصة بشرحتي
كلمة mony خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية
وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony
اخى محمد اسماعيل
ارفق ملف الـ csv وبالطريقة التالية
قم بعمل نسخة من الملف لديك
ثم قم بتحريره ومسح جميع البيانات وابقاء لا يقل عن عدد 2 بيان
يمكنك تغيير الاسماء والتواريخ وما شبه ببيانات اخري عشوائية ولكن توافق النطاق
ثم قم بعمل حفظ وارفق هذه النسخة هنا
حتى يتم عمل المطلوب دون التخمين لما شرحته
ويتم الرد بعد ذلك ينقصه او لا يعمل كما تريد فيذهب مجهود من يساعد بلا فائدة
تحياتى لك
وتمنياتى لك التوفيق
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - محمد اسماعيل - 24-09-18
(24-09-18, 11:28 AM)elgokr كتب : (24-09-18, 01:37 AM)محمد اسماعيل كتب : صعب انقل الملف فية اكواد العملية وارقام العملاء واكواد خاصة بشرحتي
كلمة mony خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية
وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony
اخى محمد اسماعيل
ارفق ملف الـ csv وبالطريقة التالية
قم بعمل نسخة من الملف لديك
ثم قم بتحريره ومسح جميع البيانات وابقاء لا يقل عن عدد 2 بيان
يمكنك تغيير الاسماء والتواريخ وما شبه ببيانات اخري عشوائية ولكن توافق النطاق
ثم قم بعمل حفظ وارفق هذه النسخة هنا
حتى يتم عمل المطلوب دون التخمين لما شرحته
ويتم الرد بعد ذلك ينقصه او لا يعمل كما تريد فيذهب مجهود من يساعد بلا فائدة
تحياتى لك
وتمنياتى لك التوفيق
هشيل البيانات ارقام الخطوط وغير اكواد العملية
ملف الرسائل
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - elgokr - 24-09-18
مرفق السورس + برنامج للاختبار
السورس (2015)
الادورات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView
تم تعطيل التعديل والحذف والاضافة من DataGridView
كود الفورم كاملاً
كود :
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.Rows.Clear()
DataGridView1.Columns.Clear()
Dim OFD_ As New OpenFileDialog
Dim RdVal As IO.StreamReader
Dim TxVal As String
Dim SpVal As String()
OFD_.DefaultExt = "csv"
OFD_.FileName = Nothing
OFD_.InitialDirectory = Application.StartupPath
OFD_.Filter = "File [CSV]|*.csv"
OFD_.Title = "Select file"
If OFD_.ShowDialog() <> DialogResult.Cancel Then
RdVal = IO.File.OpenText(OFD_.FileName)
TxVal = RdVal.ReadToEnd()
RdVal.Close()
TxVal = TxVal.Replace(vbNewLine, ",")
SpVal = TxVal.Split(",")
Else
Exit Sub
End If
DataGridView1.ColumnCount = 5
For ii As Integer = 0 To 4
DataGridView1.Columns(ii).Name = SpVal(ii)
Next
DataGridView1.Columns(0).Width = 30
DataGridView1.Columns(1).Width = 240
DataGridView1.Columns(2).Width = 100
DataGridView1.Columns(3).Width = 50
DataGridView1.Columns(4).Width = 750
For i As Integer = 1 To Val(SpVal.Length / 5) - 1
Dim row As String() = New String() {SpVal(Val(i * 5)), SpVal(Val(i * 5) + 1), SpVal(Val(i * 5) + 2), SpVal(Val(i * 5) + 3), SpVal(Val(i * 5) + 4)}
DataGridView1.Rows.Add(row)
Next
DataGridView1.Refresh()
DataGridView1.SelectAll()
End Sub
End Class
تحياتى لك
وتمنياتى لك التوفيق
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - محمد اسماعيل - 24-09-18
(24-09-18, 02:12 PM)elgokr كتب : مرفق السورس + برنامج للاختبار
السورس (2015)
الادورات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView
تم تعطيل التعديل والحذف والاضافة من DataGridView
كود الفورم كاملاً
كود :
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.Rows.Clear()
DataGridView1.Columns.Clear()
Dim OFD_ As New OpenFileDialog
Dim RdVal As IO.StreamReader
Dim TxVal As String
Dim SpVal As String()
OFD_.DefaultExt = "csv"
OFD_.FileName = Nothing
OFD_.InitialDirectory = Application.StartupPath
OFD_.Filter = "File [CSV]|*.csv"
OFD_.Title = "Select file"
If OFD_.ShowDialog() <> DialogResult.Cancel Then
RdVal = IO.File.OpenText(OFD_.FileName)
TxVal = RdVal.ReadToEnd()
RdVal.Close()
TxVal = TxVal.Replace(vbNewLine, ",")
SpVal = TxVal.Split(",")
Else
Exit Sub
End If
DataGridView1.ColumnCount = 5
For ii As Integer = 0 To 4
DataGridView1.Columns(ii).Name = SpVal(ii)
Next
DataGridView1.Columns(0).Width = 30
DataGridView1.Columns(1).Width = 240
DataGridView1.Columns(2).Width = 100
DataGridView1.Columns(3).Width = 50
DataGridView1.Columns(4).Width = 750
For i As Integer = 1 To Val(SpVal.Length / 5) - 1
Dim row As String() = New String() {SpVal(Val(i * 5)), SpVal(Val(i * 5) + 1), SpVal(Val(i * 5) + 2), SpVal(Val(i * 5) + 3), SpVal(Val(i * 5) + 4)}
DataGridView1.Rows.Add(row)
Next
DataGridView1.Refresh()
DataGridView1.SelectAll()
End Sub
End Class
تحياتى لك
وتمنياتى لك التوفيق
اشكرك علي ردك
ولكن لم تتابع طلبي كاملا انا بنقل بيانات الملف كاملة الي برنامجي اريد تعديل داخل اعمدة الداتا جريد اثناء النقل
لمشكلة اما مي كالاتي
1- بعض اللينات بالملف النصي تكون مكررة الرسائل او قيمتها فارغة اريد حذفها
2- التاريخ يظهر بالشكل الاتي = الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م اريد حذف at وتبديلها باسم اليوم بالشكل التالي
٢٢/٠٨/٢٠١٨ الأربعاء ٠١:٢٦:٣٠ م بدل من الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م
5- طبعا طريقة الريجيستر لا اجداستخدامها ساعدني احد الاخوة لحذف جزء من اللينات لاستخراج المبالغ المحولة الي واريدها كما هيا
الكود الي استخدمتة
مشاكلة
2- تعديل التاريخ كما سبق
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - elgokr - 25-09-18
الشكر لله والحمد لله
والحمد لله على كل حال
سيتم اعادة تعديل السورس لاضافة باقى التعديلات واعادة رفعه لك
فقط انتظر بعض الوقت حتى اكون على جهازى الشخصي لاقوم بذلك
تحياتى لك
وتمنياتى لك التوفيق
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - محمد اسماعيل - 25-09-18
(25-09-18, 10:58 AM)elgokr كتب : الشكر لله والحمد لله
والحمد لله على كل حال
سيتم اعادة تعديل السورس لاضافة باقى التعديلات واعادة رفعه لك
فقط انتظر بعض الوقت حتى اكون على جهازى الشخصي لاقوم بذلك
تحياتى لك
وتمنياتى لك التوفيق
بانتظارك إنشاء الله
RE: نقل البيانات من ملف csv الي الداتا جريد فيو - elgokr - 25-09-18
مرحباً اخى الغالي
اسف اولاً على التاخير بسبب يادوب جالس على جهازى
بالمرفقات السورس + برنامج للاختبار
السورس (2015)
مع برنامج الاختبار ملف من نوع csv
يحتوى على عدد 10 قيم من البيانات
لكل قيمة مكرر 5 مرات يتم اختبار التشابق من حيث التاريخ + نص الرسالة
ليبقي الناتج للعرض هما 2 من الـ 10 الموجود بالملف
تم معالجة التاريخ ليعرض طبقاً لما طلب وهو
التاريخ | اسم اليوم | الوقت | صباحاً - مساءاً
اتمنى الان ان السورس يكون ملخص كل ما تريده
الكود مسيط وبدون تعقيد وبدون اكواد مبالغ بها
محتوى كود الفورم كاملاً ...
كود :
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataGridView1.Rows.Clear()
DataGridView1.Columns.Clear()
Dim OFD_ As New OpenFileDialog
Dim RdVal As IO.StreamReader
Dim TxVal As String
Dim SpVal As String()
OFD_.DefaultExt = "csv"
OFD_.FileName = Nothing
OFD_.InitialDirectory = Application.StartupPath
OFD_.Filter = "File [CSV]|*.csv"
OFD_.Title = "Select file"
If OFD_.ShowDialog() <> DialogResult.Cancel Then
RdVal = IO.File.OpenText(OFD_.FileName)
TxVal = RdVal.ReadToEnd()
RdVal.Close()
TxVal = TxVal.Replace(vbNewLine, ",")
SpVal = TxVal.Split(",")
Else
Exit Sub
End If
DataGridView1.ColumnCount = 5
For ii As Integer = 0 To 4
DataGridView1.Columns(ii).Name = SpVal(ii)
Next
DataGridView1.Columns(0).Width = 30
DataGridView1.Columns(1).Width = 240
DataGridView1.Columns(2).Width = 100
DataGridView1.Columns(3).Width = 50
DataGridView1.Columns(4).Width = 750
For i As Integer = 1 To Val(SpVal.Length / 5) - 1
For ii As Integer = 0 To DataGridView1.RowCount - 1
If DataGridView1.Rows(ii).Cells(1).Value = SpVal(Val(i * 5) + 1) And DataGridView1.Rows(ii).Cells(4).Value = SpVal(Val(i * 5) + 4) Then GoTo GoNextNow_
Next
Dim row As String() = New String() {SpVal(Val(i * 5)), SpVal(Val(i * 5) + 1), SpVal(Val(i * 5) + 2), SpVal(Val(i * 5) + 3), SpVal(Val(i * 5) + 4)}
DataGridView1.Rows.Add(row)
GoNextNow_:
Next
DataGridView1.Refresh()
DataGridView1.SelectAll()
For ii As Integer = 0 To DataGridView1.RowCount - 1
DataGridView1.Rows(ii).Cells(1).Value = DataGridView1.Rows(ii).Cells(1).Value.ToString.Replace(" at", Nothing)
Dim SpDate As String() = DataGridView1.Rows(ii).Cells(1).Value.ToString.Split(Space(1))
DataGridView1.Rows(ii).Cells(1).Value = SpDate(1) & SpDate(0) & SpDate(2) & SpDate(3)
Next
End Sub
End Class
الادوات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView
تحياتى لك
وتمنياتى لك التوفيق
|