private bool SaveToExcel()
       {
           string FileName;
           SaveFileDialog saveFileDialog = new SaveFileDialog();
           saveFileDialog.RestoreDirectory = true;
           saveFileDialog.OverwritePrompt = true;
           saveFileDialog.AutoUpgradeEnabled = true;
           saveFileDialog.Filter = "Execl files (*.xlsx)|*.xlsx";
           saveFileDialog.FilterIndex = 1;
           saveFileDialog.Title = "ä¿åå ã®ãã¡ã¤ã«ãé¸æãã¦ãã ãã";       Â
           Excel.Application excel = new Excel.Application();
           Excel.Workbook book = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
           //Excel.Sheets woSheets = book.Worksheets;
           Excel.Worksheet newSheet = null;
           Excel.Workbook ReBook = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
           try
           {
               //ãã¼ã¿æ¸ãè¾¼ã¿
               if (this.Keys.Count > 0)            Â
               {
                   FileName = String.Format("{0:yyyyMMdd-HHmmss}", DateTime.Now) + "-R1&R2.xls";
                   //ã·ã¼ã追å
                   newSheet = (Excel.Worksheet)book.Sheets.Add(
                       Type.Missing, Type.Missing, this.R1sheetNo.Count + this.R2sheetNo.Count - 1, Type.Missing);
                   if (!setData(saveFileDialog, book, newSheet, this.allR1Data, this.allR2Data, this.Keys,
                       this.R1sheetNo, this.R2sheetNo, FileName,this.startLine,this.endLine))
                   {
                       return false;
                   }
               }           Â
               //ãã¼ã¿æ¸ãè¾¼ã¿
               if (this.ReKeys.Count > 0)
               {
                   FileName = String.Format("{0:yyyyMMdd-HHmmss}", DateTime.Now) + "-R1&R2.xls";
                   //ã·ã¼ã追å
                   newSheet = (Excel.Worksheet)ReBook.Sheets.Add(
                       Type.Missing, Type.Missing, this.ReR1sheetNo.Count + this.ReR2sheetNo.Count - 1, Type.Missing);
                   if (!setData(saveFileDialog,ReBook, newSheet, this.ReallR1Data, this.ReallR2Data, this.ReKeys,
                       this.ReR1sheetNo, this.ReR2sheetNo, FileName,this.reStartLine,this.ReEndLine))
                   {
                       return false;
                   }
               }
               Â
               book.Close(false);
               excel.Quit();
               return true;
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString());
               book.Close(false);
               excel.Quit();
               if (excel != null)
               {
                   Kill(excel);
               }
               return false;
           }
           finally
           {
               if (excel != null)
               {
                   Kill(excel);
               }
           }
       }
Â
       /// <summary>
       /// ããã»ã¹éãã
       /// </summary>
       /// <param name="excelApp"></param>
       [System.Runtime.InteropServices.DllImport("User32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
       public static extern int GetWindowThreadProcessId(IntPtr hwnd, out  int ID);
       private void Kill(Excel.Application excelApp)
       {
           IntPtr t = new IntPtr(excelApp.Hwnd);
           int k = 0; GetWindowThreadProcessId(t, out k);
           System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
           p.Kill();
       }
Â