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

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

کاربر سایت

saeedhomayoni

عضویت از 1396/07/20

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

  • پنجشنبه 20 مهر 1396
  • 10:41
تشکر میکنم

سلام از کد زیر برای خروجی اکسل گرفتن از دیتا گرید در 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();

            }

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • پنجشنبه 20 مهر 1396
  • 11:20

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);
                            }
                        }
                    }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

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

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)