انتقال اطلاعات از سی شارپ به اکسل در 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 ذخیره بشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول