چگونه نمودارها و شیت‌های Excel را به تصاویر PNG تبدیل کنیم

چگونه نمودارها و شیت‌های Excel را به تصاویر PNG تبدیل کنیم

این مقاله نشان می‌دهد چگونه نمودارها و برگه‌های اکسل را به PNG تصاویر با استفاده از Aspose.Cells LowCode ImageConverter در برنامه‌های .NET. ImageConverter رویکردی ساده‌شده برای استخراج عناصر بصری اکسل به‌صورت تصاویر با کیفیت بالا فراهم می‌کند بدون نیاز به کدنویسی گسترده یا دانش عمیق از ساختارهای داخلی اکسل.

مشکل دنیای واقعی

طراحان گزارش و تحلیل‌گران کسب‌وکار اغلب نیاز دارند تجسم‌های مبتنی بر اکسل را در ارائه‌ها، اسناد و برنامه‌های وب گنجانند. گرفتن اسکرین‌شات به‌صورت دستی یا استفاده از کتابخانه‌های پیچیدهٔ دستکاری تصویر منجر به کیفیت نامنظم، از دست رفتن قالب‌بندی و هزینهٔ توسعهٔ قابل‌توجه می‌شود.

مرور کلی راه‌حل

با استفاده از Aspose.Cells LowCode ImageConverter می‌توانیم این چالش را به‌صورت کارآمد و با حداقل کد حل کنیم. این راه‌حل برای طراحان گزارش و تحلیل‌گران کسب‌وکار که نیاز به تولید برنامه‌نویسی‌شدهٔ دارایی‌های بصری با کیفیت بالا از داده‌های اکسل دارند و می‌خواهند قالب‌بندی و صحت بصری را حفظ کنند، ایده‌آل است.


پیش‌نیازها

قبل از پیاده‌سازی راه‌حل، اطمینان حاصل کنید که موارد زیر را دارید:

  1. Visual Studio 2019 یا نسخه‌های بعدی
  2. .NET 6.0 یا بالاتر (سازگار با .NET Framework 4.6.2+)
  3. Aspose.Cells for .NET package installed via NuGet
  4. درک پایه‌ای از برنامه‌نویسی C#

PM> Install-Package Aspose.Cells

پیاده‌سازی گام به گام

نمودار مورد نظر را از مجموعه Charts انتخاب کنید

پکیج Aspose.Cells را به پروژه خود اضافه کنید و فضای‌نام‌های مورد نیاز را وارد کنید:

using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
using System.IO;

مرحله ۲: داده‌های ورودی خود را آماده کنید

فایل Excel حاوی نمودارها یا برگه‌های کاری که می‌خواهید به تصاویر PNG تبدیل کنید را شناسایی کنید. اطمینان حاصل کنید که فایل وجود دارد و از برنامه شما قابل دسترسی است:

// Define the path to your Excel file
string excelFilePath = "reports/quarterly_sales.xlsx";

// Ensure the directory for output exists
Directory.CreateDirectory("result");

مرحله ۳: گزینه‌های ImageConverter را پیکربندی کنید

گزینه‌های فرآیند ImageConverter را بر اساس نیازهای خود تنظیم کنید:

// Basic usage - convert the entire workbook
ImageConverter.Process(excelFilePath, "result/BasicOutput.png");

// Advanced configuration
LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
loadOptions.InputFile = excelFilePath;

LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
imageOptions.Quality = 100; // Set the quality of the output image
imageOptions.OnePagePerSheet = true; // Each sheet on a separate image
saveOptions.ImageOptions = imageOptions;

مرحله ۴: اجرای فرآیند ImageConverter

عملیات ImageConverter را با گزینه‌های پیکربندی‌شده اجرا کنید:

// Basic execution
ImageConverter.Process(loadOptions, saveOptions);

// Advanced execution with custom file naming
LowCodeSaveOptionsProviderOfPlaceHolders fileNameProvider = new LowCodeSaveOptionsProviderOfPlaceHolders(
    "result/Chart${SheetIndexPrefix}${SheetIndex}_${SplitPartIndex}.png");
fileNameProvider.SheetIndexOffset = 1;
fileNameProvider.SheetIndexPrefix = "S";
fileNameProvider.SplitPartIndexOffset = 1;

ImageConverter.Process(loadOptions, saveOptions, fileNameProvider);

مرحله ۵: مدیریت خروجی

تصاویر PNG تولید شده را بر حسب نیاز برنامه‌تان پردازش و استفاده کنید:

// Verify the output files exist
if (File.Exists("result/ChartS1_1.png"))
{
    Console.WriteLine("Chart image successfully created!");
    
    // Implement your logic to use the image files
    // For example: Copy to a web server directory
    // File.Copy("result/ChartS1_1.png", "wwwroot/images/chart1.png");
}

مرحله ۶: پیاده‌سازی مدیریت خطا

مدیریت خطای مناسب را اضافه کنید تا عملکرد پایدار تضمین شود:

try
{
    // Configure load options
    LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
    loadOptions.InputFile = excelFilePath;
    
    // Configure save options
    LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
    ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
    imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
    saveOptions.ImageOptions = imageOptions;
    
    // Execute conversion
    ImageConverter.Process(loadOptions, saveOptions);
    
    Console.WriteLine("Conversion completed successfully.");
}
catch (Exception ex)
{
    // Error handling and logging
    Console.WriteLine($"Error during conversion: {ex.Message}");
    // Log the error to your logging system
    // Consider implementing retry logic for transient issues
}

مرحله ۷: بهینه‌سازی برای عملکرد

این تکنیک‌های بهینه‌سازی را برای محیط‌های تولید در نظر بگیرید:

  • برای پردازش با حجم بالا از جریان‌های حافظه استفاده کنید تا از هزینه‌های I/O فایل جلوگیری شود
  • پردازش موازی را برای چندین نمودار یا برگه کاری پیاده‌سازی کنید
  • تنظیمات کیفیت تصویر را برای تعادل مناسب بین کیفیت و حجم فایل تنظیم کنید
using System.IO;
using Aspose.Cells.LowCode;
using Aspose.Cells.Drawing;
using Aspose.Cells;
using Aspose.Cells.Rendering;

string excelFilePath = "input.xlsx";

using (MemoryStream outputStream = new MemoryStream())
{
    LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
    loadOptions.InputFile = excelFilePath;
    
    LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
    ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
    imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
    
    imageOptions.Quality = 85;
    saveOptions.ImageOptions = imageOptions;
    saveOptions.OutputStream = outputStream;
    
    ImageConverter.Process(loadOptions, saveOptions);
    
    byte[] imageBytes = outputStream.ToArray();
    
    File.WriteAllBytes("OptimizedChart.png", imageBytes);
}

گام 8: مثال کامل پیاده‌سازی

در اینجا یک مثال کامل و عملی آورده شده است که کل فرآیند را نشان می‌دهد:

using System;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
using Aspose.Cells.Drawing;

namespace ExcelChartToPngConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Set up directories
                Directory.CreateDirectory("result");
                
                // Define source Excel file
                string excelFilePath = "quarterly_sales.xlsx";
                
                Console.WriteLine("Starting Excel chart conversion...");
                
                // Basic conversion - entire workbook
                ImageConverter.Process(excelFilePath, "result/FullWorkbook.png");
                
                // Advanced conversion with options
                LowCodeLoadOptions loadOptions = new LowCodeLoadOptions();
                loadOptions.InputFile = excelFilePath;
                
                LowCodeImageSaveOptions saveOptions = new LowCodeImageSaveOptions();
                ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
                imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
                imageOptions.Quality = 100;
                imageOptions.OnePagePerSheet = true;
                saveOptions.ImageOptions = imageOptions;
                
                // Custom file naming pattern for multi-sheet output
                LowCodeSaveOptionsProviderOfPlaceHolders fileNameProvider = 
                    new LowCodeSaveOptionsProviderOfPlaceHolders(
                        "result/Report${SheetIndexPrefix}${SheetIndex}_${SplitPartIndex}.png");
                fileNameProvider.SheetIndexOffset = 1;
                fileNameProvider.SheetIndexPrefix = "S";
                fileNameProvider.SplitPartIndexOffset = 1;
                
                // Execute conversion with custom naming
                ImageConverter.Process(loadOptions, saveOptions, fileNameProvider);
                
                // For specific sheet only conversion
                saveOptions = new LowCodeImageSaveOptions();
                imageOptions = new ImageOrPrintOptions();
                imageOptions.ImageType = Aspose.Cells.Drawing.ImageType.Png;
                imageOptions.PageIndex = 0; // First sheet only
                saveOptions.ImageOptions = imageOptions;
                saveOptions.OutputFile = "result/FirstSheetOnly.png";
                
                ImageConverter.Process(loadOptions, saveOptions);
                
                Console.WriteLine("Conversion completed successfully!");
                Console.WriteLine("Output files located in 'result' directory.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error occurred: {ex.Message}");
                Console.WriteLine(ex.StackTrace);
            }
        }
    }
}

موارد استفاده و کاربردها

سیستم‌های گزارش‌گیری سازمانی

تحلیل‌گران مالی می‌توانند به‌صورت خودکار دارایی‌های بصری را از گزارش‌های اکسل تولید کنند تا در ارائه‌های اجرایی یا داشبوردها گنجانده شوند. این کار گرفتن اسکرین‌شات دستی را حذف می‌کند و تضمین می‌کند که تجسم‌های بصری سازگار و با کیفیت بالا، داده‌های منبع را به‌دقت نمایان سازند.

گردش‌کارهای یکپارچه‌سازی داده

جریان‌های یکپارچه‌سازی می‌توانند به‌صورت خودکار نمودارهای مبتنی بر اکسل را به فرمت‌های تصویری تبدیل کنند تا در PDF گزارش‌ها، پورتال‌های وب یا اعلان‌های ایمیلی گنجانده شوند. این خودکارسازی میزان تلاش دستی لازم برای تبدیل تجسم‌های داده‌ای به فرمت‌های قابل‌استفاده را کاهش می‌دهد.

پردازش خودکار اسناد

سیستم‌های تولید سند می‌توانند به‌صورت برنامه‌نویسی نمودارها و تجسم‌ها را از کتاب‌کارهای Excel استخراج کنند تا گزارش‌های حرفه‌ای ایجاد کنند که داده‌ها، متن و عناصر بصری را ترکیب می‌کنند. این امکان ایجاد گزارش‌های برنددار با قالب‌بندی و سبک‌های بصری یکسان را فراهم می‌آورد.


چالش‌ها و راه‌حل‌های رایج

چالش 1: حفظ کیفیت بالای تصویر

راه‌حل: ImageOrPrintOptions را با تنظیمات کیفیت مناسب و پارامترهای وضوح پیکسل پیکربندی کنید تا خروجی بهینه تضمین شود. برای ارائه‌ها و مواد چاپی، از تنظیمات کیفیت ۹۰ یا بالاتر استفاده کنید و تنظیمات DPI را بر اساس کاربرد موردنظر تنظیم کنید.

چالش ۲: مدیریت کاربرگ‌های بزرگ

راه‌حل: از ویژگی‌های ImageOrPrintOptions.PageIndex و PageCount برای پردازش بخش‌های خاصی از ورق‌های کاری بزرگ استفاده کنید. برای ورق‌های کاری بسیار بزرگ، استفاده از تکنیک‌های کاشی‌گذاری را با پیکربندی تنظیمات صفحه سفارشی در فایل اکسل در نظر بگیرید.

چالش ۳: رندرینگ ناسازگار در محیط‌های مختلف

راه‌حل: اطمینان حاصل کنید که قلم‌های استفاده‌شده در فایل اکسل بر روی سرور موجود هستند، یا از تنظیمات جایگزینی قلم در Aspose.Cells استفاده کنید. به‌طور کامل در محیط‌های مختلف استقرار تست کنید و در نظر بگیرید که قلم‌های ضروری را در برنامه خود جاسازی کنید.


بررسی عملکرد

  • از memory streams به‌جای فایل I/O هنگام تبدیل چندین تصویر در یک پردازش دسته‌ای استفاده کنید.
  • برای محیط‌های multi-threaded، مکانیزم‌های locking mechanisms مناسب را هنگام دسترسی به منابع مشترک پیاده‌سازی کنید.
  • هنگام تنظیم گزینه‌های کیفیت، اندازه و پیچیدگی sheet را در نظر بگیرید—پیچیدگی بالاتر به منابع پردازشی بیشتری نیاز دارد.

بهترین شیوه‌ها

  1. مکانیزم‌های caching را برای نمودارهای پردسترسی پیاده‌سازی کنید تا از تبدیل‌های مکرر جلوگیری شود.
  2. یک روش نام‌گذاری سیستماتیک برای فایل‌های خروجی تنظیم کنید تا منبع هر تصویر را پیگیری کنید
  3. متادیتا را در پوشه خروجی تصاویر گنجانده تا قابلیت ردیابی به فایل‌های Excel منبع حفظ شود
  4. فایل‌های Excel ورودی را پیش از پردازش اعتبارسنجی کنید تا اطمینان حاصل شود که شامل نمودارها و داده‌های مورد انتظار هستند
  5. پیاده‌سازی ثبت لاگ برای ردیابی تبدیل‌های موفق و هر مشکلی که در طول پردازش بروز می‌کند

سناریوهای پیشرفته

برای نیازهای پیچیده‌تر، این پیاده‌سازی‌های پیشرفته را در نظر بگیرید:

سناریو ۱: استخراج تنها نمودارهای خاص از یک برگه کاری

using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;
using System.IO;
using Aspose.Cells.Rendering;

Workbook workbook = new Workbook("Workbook.xlsx");
Worksheet worksheet = workbook.Worksheets[0];

for (int i = 0; i < worksheet.Charts.Count; i++)
{
    Chart chart = worksheet.Charts[i];
    if (chart.Title.Text.Contains("Revenue"))
    {
        chart.ToImage("revenue_chart_" + i + ".png", new ImageOrPrintOptions
        {
            ImageType = ImageType.Png,
            HorizontalResolution = 300,
            VerticalResolution = 300
        });
    }
}

سناریو ۲: ایجاد تصویر داشبورد چندنموداری

using Aspose.Cells;
using Aspose.Cells.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

// Load the workbook containing charts
Workbook workbook = new Workbook("reports/dashboard_data.xlsx");

// Create a bitmap to serve as the dashboard canvas
using (Bitmap dashboardImage = new Bitmap(1200, 800))
{
    using (Graphics g = Graphics.FromImage(dashboardImage))
    {
        // Set white background
        g.Clear(Color.White);
        
        // Draw title
        using (Font titleFont = new Font("Arial", 18, FontStyle.Bold))
        {
            g.DrawString("Q2 2025 Performance Dashboard", titleFont, 
                Brushes.DarkBlue, new PointF(400, 30));
        }
        
        // Extract and place charts
        int yPosition = 100;
        for (int sheetIndex = 0; sheetIndex < 3; sheetIndex++)
        {
            // Get specific worksheet with chart
            Worksheet sheet = workbook.Worksheets[sheetIndex];
            
            if (sheet.Charts.Count > 0)
            {
                // Convert chart to image
                MemoryStream chartStream = new MemoryStream();
                sheet.Charts[0].ToImage(chartStream, new ImageOrPrintOptions
                {
                    ImageType = ImageType.Png,
                    HorizontalResolution = 150,
                    VerticalResolution = 150
                });
                
                // Load chart image
                using (Bitmap chartImage = new Bitmap(chartStream))
                {
                    // Position chart on dashboard
                    g.DrawImage(chartImage, new Rectangle(50, yPosition, 500, 300));
                    yPosition += 320;
                }
            }
        }
        
        // Save the composite dashboard image
        dashboardImage.Save("result/complete_dashboard.png", ImageFormat.Png);
    }
}

نتیجه‌گیری

با پیاده‌سازی Aspose.Cells LowCode ImageConverter، می‌توانید نمودارها و برگه‌های کاری Excel را به‌صورت کارآمد به تصاویر PNG با کیفیت بالا تبدیل کنید و فرآیند ایجاد دارایی‌های بصری برای گزارش‌ها و ارائه‌ها را ساده‌سازی کنید. این رویکرد زمان توسعه و تلاش دستی را به‌طور قابل‌توجهی کاهش می‌دهد در حالی که صحت بصری و سازگاری قالب‌بندی را حفظ می‌کند.

برای اطلاعات بیشتر و مثال‌های اضافی، به Aspose.Cells.LowCode API Reference .

 فارسی