Aşağıdaki kodlamayla listview den exel e veri aktarıyorum. anck aktarma esnasında System.Runtime.InteropServices.COMException: 'HRESULT özel durum döndürdü: 0x800AC472' hatası alıyorum. acil olarak bana bu konuda yardımcı olur musunuz nerede takılıyor bu kodlama public void eexcelAktar(ListView lw, ProgressBar pb = null) { try { Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();
Workbook wb = xls.Workbooks.Add(XlSheetType.xlWorksheet); Worksheet ws = (Worksheet)xls.ActiveSheet; // çalışma alanı aktif çalışma alanı xls.Visible = true; // görünürlük aktif #region manuelBaslikalani // alanları manuel olarak yazıyoruz
#endregion // Eğer Progress bar nesnesi null değil ise sıfırlama ve ayarlama işlemini gerçekleştir if (pb != null) { pb.Maximum = Convert.ToInt32(lw.Items.Count.ToString()); pb.Value = 0; } // Şimdi ise dinamik olarak colon bilgilerini alıyoruz ekliyoruz for (int i = 0; i < lw.Columns.Count; i++) { // alanları manuel olarak yazıyoruz ws.Cells[1, i + 1] = lw.Columns[i].Text.ToString(); } // Şimdi de lw içerisindeki verileri dinamik olarak aktarıyoruz int _i = 2; // 2. satırdan itibaren içerikleri doldurmaya başla int j = 1; foreach (ListViewItem item in lw.Items) { ws.Cells[_i, j] = item.Text.ToString(); foreach (ListViewItem.ListViewSubItem subitem in item.SubItems) { ws.Cells[_i, j] = subitem.Text.ToString(); j++; } j = 1; _i++; // Eğer Progress bar nesnesi null değil ise artırma işlemini yap if (pb != null) { pb.Value = _i - 2; } } // column sütunları yazı boyutuna göre ayarlıyor xls.Columns.AutoFit(); // aktarama işlemi sırasında alabileceğimiz hatalara karşı önlem olarak hata bastırma işlemi yapılıyor xls.AlertBeforeOverwriting = false; } catch (Exception) { // hata fırlatıyoruz :) throw; } } |
Bildirim