2011-09-14 9 views
0

現在、私のコードの動作は、ボタン1をクリックしてデータグリッドビューを生成し、ボタン2をクリックしてExcelに渡します。ボタンコントロールを排除する方法はありますか?コードで自動的にこれらの処理を行うようにしていますか?ボタンコントロールされていないDataGridviewを自動的に生成する方法はありますか?

**private void button1_Click(object sender, EventArgs e)** 
    { 
     string[] fileEntries = Directory.GetFiles(@"c:\Sciclone UAC", "*.cfg*"); 
     foreach (string fileName in fileEntries) 
     { 

      var query = from file in fileEntries 
         let doc = XDocument.Load(file) 
         let x = doc.Descendants("XAxisCalib").Single() 
         let y = doc.Descendants("YAxisCalib").Single() 
         let z = doc.Descendants("ZAxisCalib").Single() 
         select new 
         { 

          XMax = x.Element("Max").Value, 
          XMin = x.Element("Min").Value, 
          YMax = y.Element("Max").Value, 
          YMin = y.Element("Min").Value, 
          ZMax = z.Element("Max").Value, 
          ZMin = z.Element("Min").Value 
         }; 


      var bs3 = new BindingSource { DataSource = query }; 

      dataGridView1.AutoGenerateColumns = true; 
      dataGridView1.AutoSize = true; 

      dataGridView1.DataSource = bs3; 
     } 
    } 



    **private void button2_Click(object sender, EventArgs e)** 
    { 
     Excel.Application xlApp ; 
     Excel.Workbook xlWorkBook ; 
     Excel.Worksheet xlWorkSheet ; 
     object misValue = System.Reflection.Missing.Value; 

     xlApp = new Excel.Application(); 
     xlWorkBook = xlApp.Workbooks.Add(misValue); 
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
     int i = 0; 
     int j = 0; 

     for (i = 0; i <= dataGridView1.RowCount - 1; i++) 
     { 
      for (j = 0; j <= dataGridView1.ColumnCount - 1; j++) 
      { 
       DataGridViewCell cell = dataGridView1[j, i]; 
       xlWorkSheet.Cells[i + 1, j + 1] = cell.Value; 
      } 


     } 

     Excel.Range chartRange; 

     Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
     Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250); 
     Excel.Chart chartPage = myChart.Chart; 

     chartRange = xlWorkSheet.get_Range("A1", "B65"); 
     chartPage.SetSourceData(chartRange, misValue); 
     chartPage.ChartType = Excel.XlChartType.xlColumnClustered; 

     Excel.Range chartRange1; 

     Excel.ChartObjects xlChart1 = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
     Excel.ChartObject myChart1 = (Excel.ChartObject)xlChart1.Add(10, 80, 300, 250); 
     Excel.Chart chartPage1 = myChart1.Chart; 

     chartRange1 = xlWorkSheet.get_Range("C1", "D65"); 
     chartPage1.SetSourceData(chartRange1, misValue); 
     chartPage1.ChartType = Excel.XlChartType.xlColumnClustered; 

     Excel.Range chartRange2; 

     Excel.ChartObjects xlChart = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
     Excel.ChartObject myChart2 = (Excel.ChartObject)xlChart.Add(10, 80, 300, 250); 
     Excel.Chart chartPage2 = myChart2.Chart; 

     chartRange2 = xlWorkSheet.get_Range("E1", "F65"); 
     chartPage2.SetSourceData(chartRange2, misValue); 
     chartPage2.ChartType = Excel.XlChartType.xlColumnClustered; 

     xlWorkBook.SaveAs("ScicloneMaxMin.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
     xlWorkBook.Close(true, misValue, misValue); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp); 

答えて

0

フォームのコンストラクターまたはShownハンドラにコードを置くことができます。

+0

私はそれらが何であるか分かりません。それらはWindowsフォームのVStudio内にありますか? –

+0

私はそれをどうやって行うことができるかもしれないかというと、それ以上の話題について議論することはできますか?私の状況ではどちらが簡単ですか? –

関連する問題