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