2016-12-24 1 views
0

Excelにデータを挿入する際に問題があります。私はC#を使用してExcelファイルにdatagridviewにshwonであるデータを挿入したいと思います。私のコードはエラーを表示しませんでしたが、私のExcelファイルをチェックすると、そこに入力されたデータはありません。誰でも助けてくれますか?あなたはSave()方法は、あなたが行った変更を書き戻しませんFILESTREAMでパッケージを開くと、私はEPPlusEPPlusを使用してDatagridviewからExcelにデータを挿入できませんC#

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

を使用しています。それは黙って失敗します。あなたのストリームが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

はありがとうございました。できます :) –

関連する問題