دسته بندی ها
01:28 1402/10/06

انتقال اطلاعات از سی شارپ به اکسل در Sheet های مختلف

مشخصات سوال کننده :
کاربر : Radman     امتیاز کاربر : 169     رتبه کاربر : 9
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 1652
هوش مصنوعی

پاسخ هوش مصنوعی

برای انتقال اطلاعات از یک DataGridView به چندین شیت در اکسل با استفاده از C#، می توانید از کتابخانه EPPlus یا Microsoft.Office.Interop.Excel استفاده کنید. در اینجا یک مثال با استفاده از Microsoft.Office.Interop.Excel آورده شده است:

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

public void ExportToExcel(DataGridView dataGridView)
{
    Excel.Application excelApp = new Excel.Application();
    excelApp.Visible = true;
    Excel.Workbook workbook = excelApp.Workbooks.Add();

    // شیت اول
    Excel.Worksheet worksheet1 = (Excel.Worksheet)workbook.Worksheets[1];
    for (int i = 0; i < dataGridView.Rows.Count; i++)
    {
        for (int j = 0; j < 4; j++) // فقط 4 فیلد اول
        {
            worksheet1.Cells[i + 1, j + 1] = dataGridView.Rows[i].Cells[j].Value;
        }
    }

    // شیت دوم
    Excel.Worksheet worksheet2 = (Excel.Worksheet)workbook.Worksheets.Add();
    for (int i = 0; i < dataGridView.Rows.Count; i++)
    {
        for (int j = 4; j < 7; j++) // 3 فیلد بعدی
        {
            worksheet2.Cells[i + 1, j - 3] = dataGridView.Rows[i].Cells[j].Value;
        }
    }

    // شیت سوم
    Excel.Worksheet worksheet3 = (Excel.Worksheet)workbook.Worksheets.Add();
    for (int i = 0; i < dataGridView.Rows.Count; i++)
    {
        for (int j = 7; j < 10; j++) // 3 فیلد آخر
        {
            worksheet3.Cells[i + 1, j - 6] = dataGridView.Rows[i].Cells[j].Value;
        }
    }

    // نهایی کردن کار
    workbook.SaveAs(@"C:\path\to\your\file.xlsx");
    workbook.Close();
    excelApp.Quit();
}

این کد مثال نحوه انتقال بخش هایی از دیتا گرید ویو به سه شیت مختلف در یک فایل اکسل را نشان می دهد. توجه داشته باشید که باید مسیر واقعی فایل اکسل را در کد مشخص کنید و همچنین کتابخانه Microsoft.Office.Interop.Excel را در پروژه خود اضافه کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 17:28 1402/10/08

بهتر بود کدی که برای انتقال اطلاعات به اکسل نوشتید رو قرار بدید. ببینید معمولا هنگام انتقال اطلاعات از سی شارپ به اکسل از کلاس WorkSheet برای تشخیص و کار با Sheet مورد نظر استفاده میشه. به عنوان مثال کد زیر رو در نظر بگیرید : 

ارسال اطلاعات از جدول به اکسل//
Excel.Application excel = new Excel.Application();
excel.Visible = true;

Workbook workbook = excel.Workbooks.Add(System.Reflection.Missing.Value);
Worksheet sheet1 = (Worksheet)workbook.Sheets[1];
Excel.Range range;
Excel.Range myRange;

for (int i = 0; i < dataGrid.Columns.Count – 3; i++)
{
   range = (Excel.Range)sheet1.Cells[1, i + 1];
   sheet1.Cells[1, i + 1].Font.Bold = true;
   range.Value = dataGrid.Columns[i].Header;

   for (int j = 0; j < dataGrid.Items.Count; j++)
   {
      TextBlock b = dataGrid.Columns[i].GetCellContent(dataGrid.Items[j]) as TextBlock;
      myRange = sheet1.Cells[j + 2, i + 1] ;myRange.Value = b.Text;
   }
}

همونطوری که در نمونه بالا مشاهده می کنید مشخص کردیم اطلاعات در Sheet با اندیس 1 ذخیره بشه.

ویرایش شده در جمعه 8 دی 1402 ساعت 17:29:31
به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود