مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

آموزشگاه برنامه نویسان

خروجی گرفتن از data grid به excell

پنج شنبه, 20 مهر 1396 10:41

خروجی گرفتن از data grid به excell

سلام از کد زیر برای خروجی اکسل گرفتن از دیتا گرید در wpf استفاده کردم ولی به سطر 11 از جدول که میرسه خطا میده می گه نوع مشکل داره و ... در صورتی که همه اش متن هست و با حذف رکورد 11 از جدول باز هم به سطر جدید گیر میده


            if (dataGrid.Items.Count < 1)
            {
                MessageBox.Show("اطلاعاتی برای خروجی گرفتن وجود ندارد");
            }

               else
            {
                dataGrid.SelectedIndex = 0;
            dataGrid.SelectedItem = dataGrid.SelectedItems[0];
                Excel.Application xlApp;
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                object misValue = System.Reflection.Missing.Value;
                Excel.Range rangeToHoldHyperlink;
                Excel.Range CellInstance;
                xlApp = new Excel.Application();
                xlWorkBook = xlApp.Workbooks.Add(misValue);

                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
                xlApp.DisplayAlerts = false;
                //Dummy initialisation to prevent errors.
                rangeToHoldHyperlink = xlWorkSheet.get_Range("A1", Type.Missing);
                CellInstance = xlWorkSheet.get_Range("A1", Type.Missing);

                for (int i = 1; i < dataGrid.Columns.Count + 1; i++)
                {
                xlWorkSheet.Cells[1, i] = i.ToString() ;
                    xlWorkSheet.Cells[2, i] = dataGrid.Columns[i - 1].Header.ToString();
                }
                dataGrid.SelectedItem = dataGrid.Items[0];
            string cell="";
                for (int i = 0; i < dataGrid.Items.Count - 1; i++)
                {
                  for (int j = 0; j < dataGrid.Columns.Count; j++)
             
                {
                        object item = new object(); 
                        item= dataGrid.Items[i];

                        //MessageBox.Show("I="+i.ToString()+"J="+j.ToString(), (dataGrid.SelectedCells[j].Column.GetCellContent(item) as TextBlock).Text);
               
                            cell = (dataGrid.SelectedCells[j].Column.GetCellContent(item) as TextBlock).Text;
             
                       
                   try
                    {
                        xlWorkSheet.Cells[i + 3, j + 1] = cell;
                    }
                    catch { MessageBox.Show("I=" + i.ToString() + "J=" + j.ToString(),cell); }
                    }

                }

                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "Excel Document(*.xlsx)|*.xlsx";
                sfd.FileName = "";
                if (sfd.ShowDialog() == true)
                {
                    xlWorkBook.SaveAs(sfd.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                }
                xlApp.Quit();

            }

آکادمی برنامه نویسان تلگرام برنامه نویسان
پنج شنبه, 20 مهر 1396 11:20

نقل قول : خروجی گرفتن از data grid به excell

frownپیشنهاد میکنم از کامپوننت زیبا و با امکانات زیاد Dev  استفاده کنید.

کد خروجی به اکسل - html  - word - pdf و ... رو داره.

نمونه کد خروجی به اکسلش اینه:

 using (SaveFileDialog sd = new SaveFileDialog())
                    {
                        sd.Filter = "Excel File (*.xlsx)|*.xlsx";
                        if (sd.ShowDialog() == DialogResult.OK)
                        {
                            if (sd.FileName.Trim() != String.Empty)
                            {
                                gvActivityData.ExportToXlsx(sd.FileName);
                            }
                        }
                    }

کسانی که از این پست تشکر کرده اند : saeedhomayoni,
پنج شنبه, 20 مهر 1396 11:39
کسانی که از این پست تشکر کرده اند : saeedhomayoni,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید