2016-07-31 4 views
0

При экспорте данных файл Excel пуст! Я начинаю, и я не могу решить проблему. Это мой код:Экспорт данных Excel в C# win App

Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); 
     Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)Excel.ActiveSheet; 
     Excel.Visible = true; 


     ws.Cells[1, 1] = "Row"; 
     ws.Cells[1, 2] = "نام"; 
     ws.Cells[1, 3] = "نام خانوادگی"; 
     ws.Cells[1, 4] = "تاریخ ورود"; 
     ws.Cells[1, 5] = "تاریخ خروج"; 
     ws.Cells[1, 6] = "زمان ورود"; 
     ws.Cells[1, 7] = "زمان خروج"; 
     ws.Cells[1, 8] = "تاریخ فارسی"; 


     for(int j=2;j<=dataGridView1.Rows.Count; j++) 
     { 
      for(int i=2;i<=5;i++) 
      { 
       ws.Cells[j, 1] = dataGridView1.Rows[j - 2].Cells[i - 1].Value; 
      } 
     } 

Результат: Current Excel snapshot

+2

Нам не хватает кода для сохранения и закрытия рабочего листа. –

+0

взгляните на это: http://stackoverflow.com/questions/6840099/how-can-i-export-data-to-excel-file –

ответ

0

Payam Hayati! Вы не сохранили файл или рабочий лист, и поэтому вы не получили желаемый результат. Например, см. Ниже:

public class Product 
{ 
    public string Code { get; set; } 
    public string Name { get; set; } 
    public double Price { get; set; } 
} 

Выше представлен класс, демонстрирующий, как сохранять или экспортировать файл Excel. Теперь мы создадим коллекцию объектов следующим в списке:

List<Product> products = new List<Product>() 
{ 
    new Product { Code = "1234", Name = "Denim Jeans", Price = 2000 }, 
    new Product { Code = "123456", Name = "Denim Jacket", Price = 3000 }, 
    new Product { Code = "12345678", Name = "Nike Sneakers", Price = 4000 } 
}; 

Теперь в методе, поместите следующий код: (Не забудьте добавить ссылку на Microsoft.Office.Interop.Excel.dll)

public void ExportToExcel(List<Product> products) 
{ 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 

    excel.Workbooks.Add(); //Create empty workbook 
    Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet; //Create Worksheet from active sheet 

    try 
    { 
    workSheet.Cells[1, "A"] = "Code"; //Set the header 
    workSheet.Cells[1, "B"] = "Name"; 
    workSheet.Cells[1, "C"] = "Price"; 

    int row = 2; //Start the row 
    foreach (Product items in products) //Iterate through a loop 
    { 
     workSheet.Cells[row, "A"] = items.Code; 
     workSheet.Cells[row, "B"] = items.Name; 
     workSheet.Cells[row, "C"] = string.Format("{0} Price", items.Price); 

     row++; 
    } 

    workSheet.Range["A1"].AutoFormat(Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic1); 

    string fileName = string.Format(@"{0}\DatainExcel.xlsx", Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); 

    workSheet.SaveAs(fileName); //Save data in the file 

    MessageBox.Show(string.Format("The file '{0}' is saved successfully!", fileName)); 
} 

catch (Exception exception) 
{ 
    MessageBox.Show("Exception", "Problem while saving Excel file!\n" + exception.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

finally 
{ 
    excel.Quit(); //This is to quit excel 

    if (excel != null) 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); 

    if (workSheet != null) 

    System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet); 

    excel = null; 
    workSheet = null; 

    GC.Collect(); //This is to force garbage cleaning 
    } 
} 

И все готово. Попробуй.