folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Datagridview To XLS(EXCEL)



C# Datagridview To XLS(EXCEL)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    Merhaba müridler,

    DataGrid üzerindeki bilgileri EXCEL'e aktarmaya çalışıyorum, malesef sağlam&sorunsuz bir kod öbeği yazamadım ve araştırdığım kadarıyla internettede bulamadım. Konu hakkında dökümanı&kaynağı olan var mı ?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dyrnade
    dyrnade's avatar
    Kayıt Tarihi: 27/Temmuz/2009
    Erkek

    Burdaki örnektir. Aktarmak için en iyi yöntemmiş.

    http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/27a9002e-9d53-440d-9750-e6c64406fdd6

    DataTable'ı Arraya dönüştürmeyi dene, ve hepsini bir kerede Excel'e aktar.  65000 satır X 9 sütünda denedim ve 10 saniyeden daha kısa bir sürede çalıştı.

     

    Excel.Application ReportFile;

    Excel._Workbook WorkBook;

    Excel._Worksheet Sheet;

    Excel.Range Range;

    try

    {

    SqlConnection conn = new SqlConnection(IBS_HR_System.DataAccessLayer.dalDBConnection.GetConnectionString());

    DataTable dt = new DataTable("ResultRecords");

    SqlCommand cmd = new SqlCommand("select * from audit_log", conn);

    SqlDataAdapter da = new SqlDataAdapter();

    da.SelectCommand = cmd;

    da.Fill(dt);

    //Maksimum hücreyi al

    String MaxRow = dt.Rows.Count.ToString();

    String MaxColumn = ((String)(Convert.ToChar(dt.Columns.Count / 26 + 64).ToString() + Convert.ToChar(dt.Columns.Count % 26 + 64))).Replace('@',' ').Trim();

    String MaxCell = MaxColumn + MaxRow;

    //Excel'i başlat

    ReportFile = new Excel.Application();

    ReportFile.Visible = false;

    //Yeni Workbook & Worksheet

    WorkBook = (Excel._Workbook)(ReportFile.Workbooks.Add("workbook"));

    Sheet = (Excel._Worksheet)WorkBook.ActiveSheet;

    //Hücre hücre tablo başlıklarını ekle.

    for (int i = 0; i < dt.Columns.Count; i++)

    Sheet.Cells[1, i + 1] = dt.ColumnsIdea.ColumnName;

    //Format

    Sheet.get_Range("A1", MaxColumn + "1").Font.Bold = true;

    Sheet.get_Range("A1", MaxColumn + "1").VerticalAlignment =

    Excel.XlVAlign.xlVAlignCenter;

    //2 Boyutlu Array oluştur

    string[,] Values = new string[dt.Rows.Count, dt.Columns.Count];

    for (int i=0; i<dt.Rows.Count; i++)

    for (int j = 0; j < dt.Columns.Count; j++)

    {

    Values[i, j] = dt.RowsIdea[j].ToString();

    }

    //Excel'i dizi değerleriyle doldur

    Sheet.get_Range("A2", MaxCell).Value2 = Values;

    //Excel'in görünür olduğuna ve kullanıcı kontrolu sağladığına emin ol

    ReportFile.Visible = true;

    ReportFile.UserControl = true;

    }

    catch (Exception ex)

    {

    MessageBox.Show(ex.ToString());

    }

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek

    .net 4.0 kullanıyorsan dynamic kullanarak at.

    http://msdn.microsoft.com/en-us/library/dd264736.aspx

    sayfanın en altında ki örneği dataGridView'in row ve column larını döngüye sokarak ayarla.

    Cells[1, 1] de ilk değer row, ikinci değer de column. çok fazla uğraşmamış olursun ;)

Toplam Hit: 1841 Toplam Mesaj: 3