sudhakarthikeyan Ответов: 2

Использование цикла foreach получение данных и сохранение их в файл excel


В таблице запишите следующее

Select * from  Employee

Cityid AssName  ProjectName   Mobile    Source       Destination
  1     Rakesh    Java        987445     TK            BLR
  1     Suresh    Dotnet      884554     RM            BTP
  1     Vignesh   Testing     451211     RP            KOL
  1     Suresh    Mainframe   457845     RF            KOL

  2     Ramesh    Animation   454542     JS            KOC
  2     Magesh    Warehouse   211455     WH            KOC
  2     Santhosh  Database    445545     RO            CHN
  2     Vignesh   ETLTool     154555     VJ            CHN


код консольного приложения выглядит следующим образом

я отображаю вышеприведенные данные из таблицы Employee (база данных) в файл excel с помощью консольного приложения.

Мой консольный код приложения выглядит следующим образом


      string connectionstring = "Server=(local);initial           catalog=OneC;Trusted_Connection=True";
      SqlConnection con = new SqlConnection(connectionstring);
      SqlCommand command= new SqlCommand();
      SqlDataReader dr;
      DataSet ds= new DataSet();
      command.CommandText = "Select * from  Employee";
      command.CommandType = CommandType.Text;
      command.Connection = con;
      con.Open();
      dr= cmd.ExecuteReader();
       if (dr.HasRows)
       {

using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Details\Excel.xls"))
        {
           while (dr.Read())
               {
                  for (int i = 0; i < dr.FieldCount; i++)
                   {
                        sw.Autoflush = true;
                        sw.write(dr[i].Tostring() + "\t");
                   }
                         sw,writeline("\n");
               }
        }
                          con.Close();
       }


Когда я exeucte выше запрос в моей системе в папке c под папкой details excel файл создается следующим образом

в моей системной папке C, созданной как details, в этой папке details создается файл excel.
1     Rakesh    Java        987445     TK            BLR
1     Suresh    Dotnet      884554     RM            BTP
1     Vignesh   Testing     451211     RP            KOL
1     Suresh    Mainframe   457845     RF            KOL

2     Ramesh    Animation   454542     JS            KOC
2     Magesh    Warehouse   211455     WH            KOC
2     Santhosh  Database    445545     RO            CHN
2     Vignesh   ETLTool     154555     VJ            CHN


Но я хочу, чтобы файл excel был сохранен на основе идентификатора города. Город id 1 Детали, которые будут сохранены в одном excel

И еще один город, удостоверение личности 2 детали должны быть сохранены в другом формате Excel


для этого как я могу это сделать asp.net использование моего вышеприведенного кода в консольном приложении

Я хочу, чтобы данные City id 1 были сохранены в одном excel следующим образом

1     Rakesh    Java        987445     TK            BLR
1     Suresh    Dotnet      884554     RM            BTP
1     Vignesh   Testing     451211     RP            KOL
1     Suresh    Mainframe   457845     RF            KOL


Я хочу, чтобы данные City id 2 были сохранены в другом excel следующим образом

2     Ramesh    Animation   454542     JS            KOC
2     Magesh    Warehouse   211455     WH            KOC
2     Santhosh  Database    445545     RO            CHN
2     Vignesh   ETLTool     154555     VJ            CHN


Что я уже пробовал:

я хочу отображать данные в зависимости от Cityid в разных excel

Я хочу, чтобы данные City id 1 были сохранены в одном excel следующим образом

1 Ракеш Ява 987445 ТК БЛР
1 Suresh Dotnet 884554 RM BTP
1 рота тестирования 451211 РП коль
1 Суреш универсальный 457845 коль РФ


Я хочу, чтобы данные City id 2 были сохранены в другом excel следующим образом

2 Ramesh Animation 454542 JS KOC
Склад 2 Магешь 211455 чт Кок
2 База данных Santhosh 445545 RO CHN
2 Vignesh ETLTool 154555 VJ CHN

2 Ответов

Рейтинг:
0

Richard MacCutchan

Во-первых, вы не пишете файл Excel, вы пишете текст. Если вы хотите, чтобы выходные данные были в формате, который Excel будет загружать непосредственно, то вы должны записать их как CSV (поля, разделенные запятыми) или использовать OLEDB для создания правильного файла формата Excel: см. Работа с MS Excel(xls / xlsx) Использование MDAC и Oledb[^Используя второй вариант, вы можете легко создавать разные файлы или разные рабочие листы в одном файле.


Maciej Los

5ед!

Рейтинг:
0

Maciej Los

Тонны примеров можно найти здесь: Поиск[^]
Автор первой ссылочной статьи использует очень быстро CopyFromRecordset метод записи данных в файл Excel.

Основная идея заключается в том, чтобы загрузить данные в DataTable объект, а затем фильтровать данные с помощью Linq и экспортировать наборы данных в разные листы Excel.

Пошаговое руководство:


  1. Подключитесь к базе данных с помощью Объект sqlconnection[^]
  2. Создавать Команда sqlcommand[^]
  3. Воспользуйся Класс sqldatareader[^] для чтения данных
  4. Загрузка данных в объект DataTable[^] объект
  5. Объект фильтр объектов DataTable на CityId поле через использование Linq To DataSet[^]
    Примеры LINQ to DataSet[^]
  6. Пройдите цикл через результирующий набор и запишите данные в новую книгу Excel
    Рабочая тетрадь.Добавить метод (Microsoft.Офис.Взаимодействие.Превосходить)[^]
    Как использовать COM Interop для создания электронной таблицы Excel (C#)[^]
    Как получить доступ к объектам Office Interop с помощью функций Visual C# (руководство по программированию на C# )[^]


//get unique CityId from DataTable 
//dt is variable type of DataTable
var uniquecities = dt.AsEnumerable().Select(x=> x.Field<int>("CityId")).Distinct().ToList();
//loop through the res
foreach(var c in uniquecities)
{
    //get the data for single CityId 
    var mydata = dt.AsEnumerable().Where(x => x.Field<int>("CityId")==c).ToList();
    //create new workbook
    Excel.Workbook wbk = ExcelInstance.Workbooks.Add();
    Excel.Worksheet wsh = wbk.Worksheets[1];
    //loop through the resultset  
    foreach(d in mydata)
    {
        //your method to write data into Excel sheet!
    }
}
</int></int>