ورود

View Full Version : سوال در مورد انتقال اطلاعات به اکسل



سیروس مقصودی
شنبه 18 اسفند 1403, 00:26 صبح
با سلام

من برای انتقال اطلاعات از dbgrid به اکسل از کامپوننت SmExport استفاده میکنم . من حدود 600.000 رکورد دارم و میخواهم آن را به اکسل انتقال دهم ولی مدت زمان انتقال به اکسل بالای 10 ساعت طول میکشه . برای رفع این مشکل چه کاری بایستی انجام دهم . چه آیتمی را بایستی در کامپوننت ExportToExcell تنظیم کنم تا مدت زمان انتقال کاهش یابد

با تشکر

ROSTAM2
شنبه 18 اسفند 1403, 09:12 صبح
با سلام

من برای انتقال اطلاعات از dbgrid به اکسل از کامپوننت SmExport استفاده میکنم . من حدود 600.000 رکورد دارم و میخواهم آن را به اکسل انتقال دهم ولی مدت زمان انتقال به اکسل بالای 10 ساعت طول میکشه . برای رفع این مشکل چه کاری بایستی انجام دهم . چه آیتمی را بایستی در کامپوننت ExportToExcell تنظیم کنم تا مدت زمان انتقال کاهش یابد

با تشکر

سلام
دیتابیست چیه؟

از کدهای ایجاد فایل اکسل و خود نرافزار اکسل می شه کمک گرفت:

مثلا این کد برای DELPHI هست که از هوش مصنوعی COPILOT گرفته شد:


uses
ComObj;


procedure CreateExcelFile;
var
ExcelApp, WorkBook, WorkSheet: Variant;
begin
try
// ایجاد یک نمونه از Excel
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := False; // عدم نمایش Excel هنگام اجرا


// افزودن یک Workbook
WorkBook := ExcelApp.Workbooks.Add;
WorkSheet := WorkBook.Worksheets[1];


// افزودن داده به سلول‌های Excel
WorkSheet.Cells[1, 1] := 'ستون 1';
WorkSheet.Cells[1, 2] := 'ستون 2';
WorkSheet.Cells[2, 1] := 'داده 1';
WorkSheet.Cells[2, 2] := 'داده 2';


// ذخیره فایل Excel
WorkBook.SaveAs('C:\Users\YourUsername\Desktop\MyE xcelFile.xlsx');
WorkBook.Close;


ShowMessage('فایل Excel با موفقیت ایجاد شد!');
except
on E: Exception do
ShowMessage('خطا: ' + E.Message);
end;


// آزاد کردن منابع
ExcelApp.Quit;
ExcelApp := Unassigned;
end;




در مورد سرعت عملکردش دیگه چیزی نمی دونم.

سیروس مقصودی
شنبه 18 اسفند 1403, 18:05 عصر
سلام
دیتابیسم SqlServer هستش
آیا میشه چند ستون رو Merg کرد و یا ستون رو رنگی کرد ؟

ROSTAM2
شنبه 18 اسفند 1403, 18:23 عصر
سلام
دیتابیسم SqlServer هستش
آیا میشه چند ستون رو Merg کرد و یا ستون رو رنگی کرد ؟

همه تنظیماتی که می شه در محیط اکسل انجام داد در کدنوبسی هم می شه انجام داد... در مورد ویندوز 10 نمی دونم چون من ویندوز 10 رو آپدیت نکردم اما احتملا مثل ویندوز 11 اگه آپدیت بشه copilot می تونه کمک خوبی برای رسیدن به جواب این سوالها باشه...

پاسخ COPILOT:

Merg کردن خانه ها در اکسل از طریق کدنویسی DELPHI



برای ترکیب یا Merg کردن سلول‌ها در اکسل با استفاده از زبان برنامه‌نویسی Delphi، می‌توانید از کتابخانه‌هایی مانند ComObj استفاده کنید تا به قابلیت‌های اکسل دسترسی پیدا کنید. در ادامه نمونه کدی آمده است که می‌تواند شما را در این مسیر راهنمایی کند:




uses
ComObj;


procedure MergeCellsInExcel;
var
ExcelApp, Workbook, Worksheet, Range: Variant;
begin
// ایجاد نمونه‌ای از اکسل
ExcelApp := CreateOleObject('Excel.Application');
try
ExcelApp.Visible := True; // تنظیم نمایش اکسل


// ایجاد یک ورک‌بوک جدید
Workbook := ExcelApp.Workbooks.Add;
Worksheet := Workbook.Worksheets[1];


// تنظیم داده‌ها در سلول‌ها
Worksheet.Cells[1, 1].Value := 'Hello';
Worksheet.Cells[1, 2].Value := 'World';


// انتخاب رنجی از سلول‌ها برای ترکیب
Range := Worksheet.Range['A1', 'B1'];
Range.Merge(True); // ترکیب سلول‌ها


// پیام در صورت موفقیت
ShowMessage('Cells merged successfully!');
finally
// آزادسازی منابع
ExcelApp := Unassigned;
end;
end;





در مورد ستون ها چی؟



برای ترکیب یا Merge کردن ستون‌ها در اکسل با Delphi، روند مشابهی داریم؛ اما به جای سلول‌های افقی، باید یک بازه عمودی را انتخاب کنید. در اینجا کد به‌روزرسانی‌شده برای ترکیب ستون‌ها آورده شده است:




uses
ComObj;


procedure MergeColumnsInExcel;
var
ExcelApp, Workbook, Worksheet, Range: Variant;
begin
// ایجاد نمونه‌ای از اکسل
ExcelApp := CreateOleObject('Excel.Application');
try
ExcelApp.Visible := True; // تنظیم نمایش اکسل


// ایجاد یک ورک‌بوک جدید
Workbook := ExcelApp.Workbooks.Add;
Worksheet := Workbook.Worksheets[1];


// تنظیم داده‌ها در سلول‌ها
Worksheet.Cells[1, 1].Value := 'Hello';
Worksheet.Cells[2, 1].Value := 'World';


// انتخاب رنجی از سلول‌ها برای ترکیب
Range := Worksheet.Range['A1', 'A2']; // بازه عمودی
Range.Merge(True); // ترکیب سلول‌ها در ستون


// پیام در صورت موفقیت
ShowMessage('Columns merged successfully!');
finally
// آزادسازی منابع
ExcelApp := Unassigned;
end;
end;

سیروس مقصودی
شنبه 18 اسفند 1403, 22:28 عصر
خیلی ممنون مشکلم حل شد .
نحوه رنگی نمودن و تغییر فونت حروف هم چنین چیزی است در مورد رنگ و فونت جستجو کردم ولی چیزی پیدا نکردم

ROSTAM2
یک شنبه 19 اسفند 1403, 10:12 صبح
خیلی ممنون مشکلم حل شد .
نحوه رنگی نمودن و تغییر فونت حروف هم چنین چیزی است در مورد رنگ و فونت جستجو کردم ولی چیزی پیدا نکردم

تغییر Style و زنگ و فونت خانه های Excel در Delphi?



برای تغییر استایل، رنگ و فونت خانه‌های Excel در Delphi، می‌توانید از کتابخانه‌هایی مانند Excel Automation یا OLE Automation استفاده کنید. این کتابخانه‌ها به شما امکان می‌دهند که از طریق کدنویسی، تغییرات مورد نظر را اعمال کنید. در زیر یک نمونه کد ساده آورده شده است:




uses
ComObj;


var
ExcelApp, Workbook, Worksheet: Variant;
begin
// ایجاد یک نمونه از اکسل
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := True; // نمایش اکسل


// ایجاد یک ورک‌بوک جدید
Workbook := ExcelApp.Workbooks.Add;
Worksheet := Workbook.Worksheets[1];


// تغییر فونت و رنگ یک سلول
Worksheet.Cells[1, 1].Value := 'Hello, Excel!';
Worksheet.Cells[1, 1].Font.Name := 'Arial';
Worksheet.Cells[1, 1].Font.Size := 14;
Worksheet.Cells[1, 1].Font.Color := clRed; // رنگ قرمز
Worksheet.Cells[1, 1].Interior.Color := $00FF00; // پس‌زمینه سبز


// ذخیره فایل و بستن اکسل
Workbook.SaveAs('C:\MyExcelFile.xlsx');
ExcelApp.Quit;
end;