انتقال اطلاعات از سی شارپ به اکسل در Sheet های مختلف
با درود
بنده یک دیتا گرید ویو دارم 10 تا فیلد داره میخوام اطلاعات اون رو به اکسل اکسپورت کنم -حالا سوال اینجاست چه جوری میتونم مشخص کنم که اطلاعات این 10 فیلد مثلا 4 تاش به شیت اول انتقال پیدا کنه 3 تاش به شیت دوم و سه تای دیگه به شیت سوم انتقال پیدا کنه .
من برای انتقال به اکسل چون به این مورد نیاز نداشتم گزارش استیمول سافت درست میکردم و با امکانات خود استمیول سافت به اکسل انتقال میدادم.
نرم افزار با سی شارپ و ویندوز فرم نوشته شده است
پاسخ هوش مصنوعی
برای انتقال اطلاعات از یک 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 را در پروژه خود اضافه کنید.
بهتر بود کدی که برای انتقال اطلاعات به اکسل نوشتید رو قرار بدید. ببینید معمولا هنگام انتقال اطلاعات از سی شارپ به اکسل از کلاس 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 ذخیره بشه.
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول