منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : قرائة ملف يحتوي على مجموعة جداول
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم أخواني

أنا اقوم بالعمل على برنامج يقرأ ملف 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
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);


(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 علشان بعض القيم فيها مسافات.
متشكر جدا على سرعة الرد و الأهتمام