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.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;
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.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;
}
}
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.