2017-10-04 2 views
0

enter image description here J'ai une colonne nommée datein qui contient des dates. La question est comment puis-je créer une nouvelle feuille de calcul et l'enregistrer à chaque fois que la date change son mois. Un nouveau mois nouvelle feuille de calcul.Comment puis-je créer une nouvelle feuille de calcul et l'enregistrer chaque fois que la date change son mois dans EPPlus

tout ce que j'ai en ce moment est mon code pour enregistrer dans Excel en utilisant epplus.

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

     using (MySqlConnection con = new MySqlConnection(connectionString)) 
     { 
      using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM statusrouted.routed", con)) 
      { 
       cmd.CommandType = CommandType.Text; 
       using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd)) 
       { 
        using (DataTable dt = new DataTable()) 
        { 

         using (ExcelPackage pck = new ExcelPackage()) 
         { 
          sda.Fill(dt); 

          ExcelWorksheet ws = pck.Workbook.Worksheets.Add(DateTime.Today.ToString("MMMM-yyyy")); 

          ws.Cells.Style.Font.Size = 11; 
          ws.Cells["B1:K1"].Merge = true; 
          ws.Cells["B1"].Value = "INCOMING AND OUTGOING ROUTED COMMUNICATIONS"; 
          ws.Cells["B1"].Style.Font.Size = 12; 
          ws.Cells["B1"].Style.Font.Bold = true; 
          ws.Cells["B1"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; 
          ws.Cells["B1"].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; 
          ws.Cells["A2"].LoadFromDataTable((this.maindgv.DataSource as DataTable).DefaultView.ToTable(), true); 


          ws.DeleteColumn(1); 

          saveFileDialog1.Title = "Save as Excel"; 
          saveFileDialog1.FileName = ""; 

          saveFileDialog1.Filter = "Excel files(2007)|*.xlsx"; 

          if (saveFileDialog1.ShowDialog() != DialogResult.Cancel) 
          { 
           try 
           { 
            pck.SaveAs(new FileInfo(@""+ saveFileDialog1.FileName)); 
            recentsToolStripMenuItem1.AddRecentItem(@"" + saveFileDialog1.FileName); 
           } 
           catch (Exception) 
           { 
            DialogResult reminder = MessageBox.Show("Cannot save file, file opened in another program.\nClose it first! ", "Save Failed", MessageBoxButtons.OK); 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
+0

peut vous montrer la sortie de l'échantillon et l'entrée. Nous pouvons aider alors. – Ramankingdom

Répondre

0

Comment la logique fonctionne est comme indiqué ci-dessous enter image description here

Suivez ces étapes

var dateGroups = dt.AsEnumerable().GroupBy(row => row["ColumnName of Date Time"]); 
foreach (var group in dateGroups) 
{ 
// the group.Key will give the Date on the basis of which you can create sheets. 
// and then your logic of excel 
    foreach (var rows in group) 
    { 
    // excel filling logic 
    } 
} 
+0

dois-je le filtrer avant la boucle ou à l'intérieur de la boucle? Et ce qui arrive aux: 'ExcelWorksheet ws = pck.Workbook.Worksheets.Add (DateTime.Today.ToString ("MMMM-yyyy"));' –

+0

avant que la boucle de sorte que vous devez mettre les données en feuilles par date – Ramankingdom

+0

l'extrait de code dans l'exemple le fera – Ramankingdom