2017-09-11 9 views
0

開いているExcelファイルに保存すると、Excelファイルを開いてDataGridViewに表示し、DataGridViewのデータを上書きできますか?C#Excel Data既存のファイルを上書きできますか?

私は新しいファイルと新しいシートを作成して保存する方法を発見。

しかし、私が好きな方法は、新しいファイルと新しいシートを作成することではありません。

既存のExcelを上書きするにはどうすればよいですか?

英語はそれが良いではない、私の母国語ではありません。

私はすでに以下のコードで試してみました。

{ 
     SaveFileDialog sfd2 = new SaveFileDialog(); 
     sfd2.Title = "Save as Excel File"; 
     sfd2.Filter = "Excel Files(2003)|*.xls|Excel Files(2007)|*.xlsx"; 
     sfd2.FileName = ""; 

     if (sfd2.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 
       // Excel프로그램을 실행 
       excelApp = new Excel.Application(); 

       // 실행된 Excel프로그램에 통합문서를 추가 
       wb = excelApp.Workbooks.Add(); 
       //텍스트 형식 지정범위 
       Excel._Worksheet workSheet = wb.Worksheets.get_Item(1) as Excel._Worksheet; 
       Excel.Range oRange; 
       oRange = workSheet.get_Range("A1:A300", "S1:S300"); 
       oRange.Cells.NumberFormat = "@"; 

       oRange.EntireRow.AutoFit(); 
       oRange.EntireColumn.AutoFit(); 
       oRange.WrapText = false; 


       //데이터 동시저장 
       Map_DataGridView_To_ExcelSheet(dataGridView1, "Sheet1"); 
       excelApp.Worksheets.Add();     
       Map_DataGridView_To_ExcelSheet(dataGridView2, "Sheet2"); 
       excelApp.Worksheets.Add(); 
       Map_DataGridView_To_ExcelSheet(dataGridView3, "Sheet3"); 

       //view4에 데이터가 있을때만 4번째 시트를 생성 
       if (dataGridView4.DataSource != null) 
       { 
        excelApp.Worksheets.Add(); 
        Map_DataGridView_To_ExcelSheet(dataGridView4, "Sheet4"); 
       } 

       //excelApp.Worksheets.Add(); 
       //Map_DataGridView_To_ExcelSheet(dataGridView5, "Sheet5"); 
       ws.Columns.AutoFit(); 
       // 여기서 저장경로를 변경하면 됩니다. 
       wb.SaveAs(sfd2.FileName, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
       wb.Close(true); 
       excelApp.Quit();  
       MessageBox.Show("저장이 완료되었습니다."); 
      } 
      //메모리해제 
      finally 
      { 
       releaseObject(ws); 
       releaseObject(wb); 
       releaseObject(excelApp); 
      } 
     } 
    } 
    private void Map_DataGridView_To_ExcelSheet(DataGridView dataGridView, string sheetName) 
    { 
     // 지정된 문자열에 해당하는 Sheet를 가져옵니다. 
     ws = wb.Worksheets.get_Item(sheetName) as Excel.Worksheet; 

    if(dataGridView.DataSource != null) 
    { 
     for (int i = 0; i < dataGridView.ColumnCount; i++) 
     { 
      label5.Text = i.ToString(); 
      for (int j = 0; j < dataGridView.RowCount; j++) 
      { 
       label6.Text = j.ToString(); 
       // 워크시트 개체 ws의 Cells(Range 개체)와 DataGridView의 인덱스가 반대인것에 유의 
       // 또한, Cells는 인덱스가 1부터 시작 
       // ws.Cells[Row, Column] // dataGridView[Column, Row] 
       if (dataGridView[i, j].Value.ToString().Trim() != "") 
       { 
        ws.Cells[j + 1, i + 1] = dataGridView[i, j].Value.ToString(); 
       } 
      } 
      } 

答えて

0

はい、できますが、ほとんどの人はコード作成サービスではないため、このようなリクエストには本当に反応しません。 EPPlusのチュートリアルを見てみましょう.EPPlusは、よく使われていて、Excelファイルの読み書き用ライブラリです。また、SOを検索してepplusを探し、人々がそれについて尋ねた質問を見ることができます。十分なスニペットをまとめることができます。たとえば、データセットにExcelを読み込むことはできますが、そのデータセットのテーブルをデータグリッドビューに表示する方法がわからない場合は、質問を投稿してください(または私がデータグリービューでデータテーブルを表示するにはどうすればいいですか?)これは答えが設計されている質問の種類です

将来のためのガイドとして、あなたがブログで読んでいたもののようなものではなく、5行で書くことができる答えよりも、本当にstackoverflowで尋ねられるべきではありません。

+0

実際には答えはありませんが、 – TaW

+0

コメントが長すぎて、質問に答えるいくつかの要素が含まれています。コメントではなく、StackOverflowがコメントと回答をどのように見ているのかが白や黒で表示されます。 (すなわち、彼らの援助を意味する「初心者にもなる」というSOマントラを維持し、問題の指針を与え、彼らの質問が悪い/間違っている理由を伝え、それを下降/フラグ/削除しない最初の日の忘却) –

関連する問題