Multiple Sheets Excel Export

#region ExcelDosyasıOluştur – ExceleAktar
        string dosyaYolu = string.Empty;
        int sayfalamaSatirSayisi = 30; //  excelde bir sayfadaki maksimum sayfası satır sayısı
        int satirSayac = 0;
        int sayfaSayac = 0;
        int sayfaSayisi = 0; //Oluşturulması gereken sayfa adeti
        Microsoft.Office.Interop.Excel.Worksheet excelSayfasi = null;
        Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = null;
        int hWnd = 0; //windows tarafında excel’in processId’si
        private void ExceleAktar()
        {
            if (dt.Rows.Count > 0)
            {
                FolderBrowserDialog fbd = new FolderBrowserDialog();
                fbd.ShowDialog();
                if (fbd.SelectedPath.Trim().Length > 0)
                {
                    dosyaYolu = fbd.SelectedPath;
                    sayfaSayisi = (toplamSatirSayisi / sayfalamaSatirSayisi) < (Convert.ToDecimal(toplamSatirSayisi) / Convert.ToDecimal(sayfalamaSatirSayisi)) ? (toplamSatirSayisi / sayfalamaSatirSayisi) + 1 : (toplamSatirSayisi / sayfalamaSatirSayisi);
                    try
                    {
                        ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                        ExcelApp.Application.Workbooks.Add(Type.Missing);
                        for (int i = 0; i < sayfaSayisi; i++)
                        {
                            // Kolonları oluştur
                            sayfaSayac = sayfaSayac + 1;
                            excelSayfasi = (Microsoft.Office.Interop.Excel.Worksheet)ExcelApp.Sheets[sayfaSayac];
                            for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                excelSayfasi.Cells[1, j + 1] = dt.Columns[j].ColumnName;
                            }
                            /////////////////////////
                            //Satırları Oluştur
                            for (int k = 0; k < (toplamSatirSayisi – sayfalamaSatirSayisi > sayfalamaSatirSayisi ? sayfalamaSatirSayisi : toplamSatirSayisi – sayfalamaSatirSayisi); k++)// Satır
                            {
                                for (int m = 0; m < dt.Columns.Count; m++) // Sütun
                                {
                                    excelSayfasi.Cells[k + 2, m + 1] = dt.Rows[satirSayac][m].ToString();
                                }
                                satirSayac++;
                            }
                        }
                        hWnd = ExcelApp.Application.Hwnd;
                        dosyaYolu = dosyaYolu + (“\\” + Guid.NewGuid().ToString() + “_” + DateTime.Now.ToString()).Replace(” “, “”).Replace(“.”, “”).Replace(“:”, “”).Replace(“;”, “”) + “.xls”;
                        ExcelApp.ActiveWorkbook.SaveAs(dosyaYolu, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel12, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
                        ExcelApp.ActiveWorkbook.Saved = true;
                        ExcelApp.Quit();
                        MessageBox.Show(“Dosya Oluşturuldu.İşlem Başarıyla Tamamlandı.”);
                        ExcelKillTeam(hWnd);
                    }
                    catch (Exception ex)
                    {
                        ExcelKillTeam(hWnd);
                        MessageBox.Show(“İşlemde hata oluştu. Oluşturulan excel dosyasını açmayınız. Lütfen tekrar deneyiniz. İşlem detayı…: ” + ex.Message);
                        return;
                    }
                }
                else
                {
                    MessageBox.Show(“İşlemlerin devam edebilmesi için oluşturulacak excel dosyası için kaydedilecek bir klasor seçmeniz gereklidir.”);
                    return;
                }
            }
            else
            {
                MessageBox.Show(“Excel Aktarımından Önce Sistemi Listeyi Doldurmanız Gerekmektedir.”);
                return;
            }
        }
        private void ExcelKillTeam(int hWnd)
        {
            try
            {
                if (ExcelApp != null)
                {
                    ExcelApp.Application.Workbooks.Close();
                    ExcelApp.Quit();
                }
                if (hWnd != 0)
                {
                    TryKillProcessByMainWindowHwnd(hWnd);
                }
            }
            catch (Exception)
            {
            }
        }
        [DllImport(“user32.dll”)]
        private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
        public static bool TryKillProcessByMainWindowHwnd(int hWnd)
        {
            uint processId;
            GetWindowThreadProcessId((IntPtr)hWnd, out processId);
            if (processId == 0) return false;
            try
            {
                System.Diagnostics.Process.GetProcessById((int)processId).Kill();
            }
            catch (ArgumentException)
            {
                return false;
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }
        #endregion
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: