تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] قرائة ملف يحتوي على مجموعة جداول
#1
السلام عليكم أخواني

أنا اقوم بالعمل على برنامج يقرأ ملف csv يحتوي على مجموعة من الجداول
الهدف إضافة الملف لقاعدة بيانات. وجدت مثال بأستخدام regex و لكن للاسف معنديش أي خلفية عنها
المثال في الرابط 
http://codereview.stackexchange.com/ques...ike-tables

الإختلاف يمكن في الفورمات للملف. لو أحد الأخوة يساعدني في تعديل الregex أكون شاكر

الفورمات للملف يكون كالتال

كود :
%T Table1
%F Field1 Field2 Field3
%R Record1 Record2 Record
%T Table2
%F Field1 Field2 Field3
%R Record1 Record2 Record 3
الرد }}}
تم الشكر بواسطة:
#2
PHP كود :
private void button1_Click(object senderEventArgs e) {

    
DataSet ds = new DataSet();

    
string[] lines System.IO.File.ReadAllLines(@"C:\file.csv");

    foreach (
string line in lines) {

        if (
line.StartsWith("%T")) {
            
ds.Tables.Add(line.Substring(2).Trim());
        }

        else if (
line.StartsWith("%F")) {
            
string[] fields line.Substring(2).Trim().Split('\t'); //(';')
            
DataColumn[] columns = (from a in fields select new DataColumn(a)).ToArray();
            
ds.Tables[ds.Tables.Count 1].Columns.AddRange(columns);
        }

        else if (
line.StartsWith("%R")) {
            
string[] records line.Substring(2).Trim().Split('\t'); //(';')
            
ds.Tables[ds.Tables.Count 1].Rows.Add(records);
        }

    }

    
dataGridView1.DataSource ds.Tables[0];
    
MessageBox.Show(ds.Tables[0].TableName);


الرد }}}
تم الشكر بواسطة:
#3
(06-01-16, 09:34 AM)sami2015 كتب :
PHP كود :
private void button1_Click(object senderEventArgs e) {

 
   DataSet ds = new DataSet();

 
   string[] lines System.IO.File.ReadAllLines(@"C:\file.csv");

 
   foreach (string line in lines) {

 
       if (line.StartsWith("%T")) {
 
           ds.Tables.Add(line.Substring(2).Trim());
 
       }

 
       else if (line.StartsWith("%F")) {
 
           string[] fields line.Substring(2).Trim().Split(); //(';')
 
           DataColumn[] columns = (from a in fields select new DataColumn(a)).ToArray();
 
           ds.Tables[ds.Tables.Count 1].Columns.AddRange(columns);
 
       }

 
       else if (line.StartsWith("%R")) {
 
           string[] records line.Substring(2).Trim().Split(); //(';')
 
           ds.Tables[ds.Tables.Count 1].Rows.Add(records);
 
       }

 
   }

 
   dataGridView1.DataSource ds.Tables[0];
 
   MessageBox.Show(ds.Tables[0].TableName);



ربنا يبارك فيك أستاذي الكود شغال ميه ميه. فيه تعديل بسيط عملت الsplit على الtab علشان بعض القيم فيها مسافات.
متشكر جدا على سرعة الرد و الأهتمام
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم