2015-06-03 5 views
-5

Я хочу экспортировать CSV-файл из базы данных по определенным именам, например, данные пациента содержат поле «Ward name» как «GENERAL WARD (FEMALE)», тогда имя файла gererated должно быть «GENF.csv». Я пробовал с переключателем, но он не работает. Если есть какие-либо изменения, отредактируйте их.Как экспортировать файл csv с определенным именем?

Спасибо.

Вот код:

//Function declares methods to export 
public void ExportAll() { 
    try { 
     int i = 0; 
     for (int icount = 0; icount <= 400; icount++) { 
      object o = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["WARD NAME"]; 
      object obj = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["PTNAME"]; 

      int swichexpression = 9; 
      object a = "GENERAL WARD (FEMALE)"; 
      object b = "GENERAL WARD (MALE)"; 
      object c = "RECOVERY"; 
      object d = "SEMI DELUXE 02"; 
      object e = "SEMI DELUXE 05"; 
      object f = "SEMI DELUXE 06"; 
      object g = "ICU"; 
      object h = "SEMI SPECIAL 03"; 
      object j = "SEMI SPECIAL 01"; 

      switch (swichexpression) { 
       case 1: 
       if (o == a) { 
        // o = "GENF"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "GENF.csv"); 
       } 
       break; 
       case 2: 
       if (o == b) { 
        // o = "GENM"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "GENM.csv"); 
       } 
       break; 
       case 3: 
       if (o == c) { 
        //o = "REC"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "REC.csv"); 
       } 
       break; 
       case 4: 
       if (o == d) { 
        // o = "SDELX02"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX02.csv"); 
       } 
       break; 
       case 5: 
       if (o == e) { 
        // o = "SDELX05"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX05.csv"); 
       } 
       break; 
       case 6: 
       if (o == f) { 
        // o = "SDELX06"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX06.csv"); 
       } 
       break; 
       case 7: 
       if (o == g) { 
        //o = "ICU"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "ICU.csv"); 
       } 
       break; 
       case 8: 
       if (o == h) { 
        //o = "SSPEC03"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SSPEC03.csv"); 
       } 
       break; 
       case 9: 
       if (o == j) { 
        //string z = "SSPEC01"; 
        DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SSPEC01.csv"); 
       } 
       break; 
      } 
      //DataExport("select * from PatientTable", "" + s + ".csv"); 
      i++; 
     } 
    } 
    catch { 

    } 
} 

Edited :: Экспорт Метод данных,

public void DataExport(string SelectQuery, string fileName) 
    { 
     try 
     { 
      using (var dt = new DataTable()) 
      { 
       using (var da = new SqlDataAdapter(SelectQuery, con)) 
       { 
        da.Fill(dt); 

        var header = String.Join(
         ",", 
         dt.Columns.Cast<DataColumn>().Select(dc => dc.ColumnName)); 

        var rows = 
         from dr in dt.Rows.Cast<DataRow>() 
         select String.Join(
          ",", 
          from dc in dt.Columns.Cast<DataColumn>() 
          let t1 = Convert.IsDBNull(dr[dc]) ? "" : dr[dc].ToString() 
          let t2 = t1.Contains(",") ? String.Format("\"{0}\"", t1) : t1 
          select t2); 

        using (var sw = new StreamWriter(txtreceive.Text + "\\" + fileName)) 
        { 
         sw.WriteLine(header); 
         foreach (var row in rows) 
         { 
          sw.WriteLine(row); 
         } 
         sw.Close(); 
        } 
       } 
      } 
     } 
     catch { } 
    } 
+2

Что такое 'DataExport'? Откуда ему получить имя файла? –

+0

Пожалуйста, правильно откорректируйте свой код и исправьте имена переменных, они ужасны. Дайте переменным 'string' статический тип того, что они есть -' string'. Обращайтесь с возможными исключениями. –

ответ

1

Коммутатор случай является неправильным, прямо сейчас вы делаете смесь переключателя case и if, но ваш случай переключения всегда будет идти в случай 9, и вам действительно не нужен случай переключения на целые числа. Вы должны изменить его на что-то вроде этого:

string o = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["WARD NAME"]; 

    const string a = "GENERAL WARD (FEMALE)"; 
    const string b = "GENERAL WARD (MALE)"; 
    const string c = "RECOVERY"; 
    const string d = "SEMI DELUXE 02"; 
    const string e = "SEMI DELUXE 05"; 
    const string f = "SEMI DELUXE 06"; 
    const string g = "ICU"; 
    const string h = "SEMI SPECIAL 03"; 
    const string j = "SEMI SPECIAL 01"; 

    switch (o) 
    { 
     case (a): 
      //Do something 
      break; 
     case (b): 
      //Do something 
      break; 
     default: 
      //Do something 
      break; 
    } 

Edit: Если вы хотите экспортировать файл на одного пациента для каждого из ваших подопечных, вам придется изменить свой Еогеасп цикл вашего метода экспорта на что-то вроде этого :

foreach (var row in rows) 
{ 
    using (var sw = new StreamWriter(txtreceive.Text + "\\" + "Some variable to identify different patients" + filename)) 
    { 
     sw.WriteLine(header); 
     sw.WriteLine(row); 
    } 
} 

Предполагая, что каждая строка представляет пациента, вам необходимо создать файл в строке.

+0

Спасибо, работал gr8. – Member123

+0

Можете ли вы опубликовать метод DataExport в своем вопросе? –

Смежные вопросы