منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] قرائة ملف يحتوي على مجموعة جداول - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [سؤال] قرائة ملف يحتوي على مجموعة جداول (/showthread.php?tid=14330)



قرائة ملف يحتوي على مجموعة جداول - hemam - 06-01-16

السلام عليكم أخواني

أنا اقوم بالعمل على برنامج يقرأ ملف csv يحتوي على مجموعة من الجداول
الهدف إضافة الملف لقاعدة بيانات. وجدت مثال بأستخدام regex و لكن للاسف معنديش أي خلفية عنها
المثال في الرابط 
http://codereview.stackexchange.com/questions/83176/reading-a-text-file-that-contains-several-csv-like-tables

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

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

كود :
%T Table1
%F Field1 Field2 Field3
%R Record1 Record2 Record
%T Table2
%F Field1 Field2 Field3
%R Record1 Record2 Record 3



RE: قرائة ملف يحتوي على مجموعة جداول - sami2015 - 06-01-16

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);





RE: قرائة ملف يحتوي على مجموعة جداول - hemam - 06-01-16

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