2016-12-24 60 views
0

我在将数据插入Excel时遇到了一些问题。我想使用C#将datawridview中的shwon数据插入到Excel文件中。我的代码没有显示任何错误,但是当我检查我的excel文件时,没有数据输入到那里。谁能帮我 ?我用EPPlus无法使用EPPlus将数据从Datagridview插入Excel中#

string lokasifile = @"D:\\Data Pengisian SLA Surabaya\\" + new System.Globalization.CultureInfo("id-ID").DateTimeFormat.GetDayName(DateTime.Now.DayOfWeek) + "_" + System.DateTime.Now.Date.ToString("dd MMM yyyy", new System.Globalization.CultureInfo("id-ID")) + ".xlsx"; 


private void PrintScheduleBtn_Click(object sender, EventArgs e) 
     { 

      if (StaffATB.Text != "" && HelperTeamATB.Text != "" && StaffBTB.Text != "" && HelperTeamBTB.Text != "" && StaffCTB.Text != "" && HelperTeamCTB.Text != "" && StaffDTB.Text != "" && HelperTeamDTB.Text != "") 
      { 
       DialogResult dialogResult = MessageBox.Show("Apakah Anda yakin ingin menyimpan jadwal pengisian ?", "", MessageBoxButtons.YesNo); 

       if (dialogResult == DialogResult.Yes) 
       { 
        ExcelPackage pck = new ExcelPackage(); 
        FileStream stream = new FileStream(lokasifile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

        pck.Load(stream); 

        var rekap = pck.Workbook.Worksheets["Rekap"]; 

        OleDbConnection kon = new OleDbConnection(konekpengisian2); 
        OleDbCommand command = kon.CreateCommand(); 
        OleDbCommand command1 = kon.CreateCommand(); 
        OleDbCommand command2 = kon.CreateCommand(); 
        OleDbCommand command3 = kon.CreateCommand(); 

        kon.Open(); 

        int tima = 0; 
        int timb = 0; 
        int timc = 0; 
        int timd = 0; 
        int time = 0; 

        foreach (DataGridViewRow row in JadwalisiGV.Rows) 
        { 
         if (!row.IsNewRow) 
         { 
          if (row.Cells["Tim"].Value.ToString() == "A") 
          { 
           tima++; 
           rekap.Cells[tima + 7, 3].Value = row.Cells["WSID"].Value; 
           rekap.Cells[tima + 7, 4].Value = row.Cells["Limit"].Value + ",000,000"; 
           IsiTimABox.Text = tima.ToString(); 
          } 
          if (row.Cells["Tim"].Value.ToString() == "B") 
          { 
           timb++; 
           rekap.Cells[timb + 7, 9].Value = row.Cells["WSID"].Value; 
           rekap.Cells[timb + 7, 10].Value = row.Cells["Limit"].Value + ",000,000"; 
           IsiTimBBox.Text = timb.ToString(); 
          } 
          if (row.Cells["Tim"].Value.ToString() == "C") 
          { 
           timc++; 
           rekap.Cells[timc + 28, 3].Value = row.Cells["WSID"].Value; 
           rekap.Cells[timc + 28, 4].Value = row.Cells["Limit"].Value + ",000,000"; 
           IsiTimCBox.Text = timc.ToString(); 
          } 
          if (row.Cells["Tim"].Value.ToString() == "D") 
          { 
           timd++; 
           rekap.Cells[timd + 28, 9].Value = row.Cells["WSID"].Value; 
           rekap.Cells[timd + 28, 10].Value = row.Cells["Limit"].Value + ",000,000"; 
           IsiTimDBox.Text = timd.ToString(); 
          } 
          if (row.Cells["Tim"].Value.ToString() == "E") 
          { 
           time++; 
           rekap.Cells[time + 7, 15].Value = row.Cells["WSID"].Value; 
           rekap.Cells[time + 7, 16].Value = row.Cells["Limit"].Value + ",000,000"; 
           IsiTimEBox.Text = time.ToString(); 
          } 

          TotalMesinBox.Text = (tima + timb + timc + timd + time).ToString(); 

         } 
        } 

        kon.Close(); 

       } 


      } 
      else 
      { 
       MessageBox.Show("Silakan isi PIC terlebih dahulu !"); 
      } 

     } 

回答

1

当你打开包用FILESTREAM的Save()方法不会写回你所做的任何更改。它默默地失败。如果没有,它仍然会失败,因为您的数据流是用FileAccess.Read打开的,这会阻止更改底层文件。

要纠正这些问题,并确保东西被清理很好地适应你的代码如下:

private void PrintScheduleBtn_Click(object sender, EventArgs e) 
{ 

    if (StaffATB.Text != "" && HelperTeamATB.Text != "" && StaffBTB.Text != "" && HelperTeamBTB.Text != "" && StaffCTB.Text != "" && HelperTeamCTB.Text != "" && StaffDTB.Text != "" && HelperTeamDTB.Text != "") 
    { 
     DialogResult dialogResult = MessageBox.Show("Apakah Anda yakin ingin menyimpan jadwal pengisian ?", "", MessageBoxButtons.YesNo); 

     if (dialogResult == DialogResult.Yes) 
     { 
      // create an FileInfo instance 
      var file = new FileInfo(lokasifile); 
      // use the contructor that take an FileInfo 
      // wrap in a using so stuff gets disposed nicely 
      using (ExcelPackage pck = new ExcelPackage(file)) 
      { 
       var rekap = pck.Workbook.Worksheets[1]; 

       // the rest of your code here 

       // the rest of your code is above 
       // explicitely Save the changes 
       pck.Save(); 
      } 
     } 
    } 
} 
+0

太谢谢你了。有用 :) –

相关问题