چگونگی تبدیل نمودارها و ورق های اکسل به تصاویر PNG
این مقاله نشان می دهد که چگونه برای تبدیل نمودارها و ورق های کار اکسل به تصاویر PNG با استفاده از Aspose.Cells LowCode ImageConverter در برنامه های .NET. Image Convert یک رویکرد منحصر به فرد برای صادرات عناصر بصری اکسل به عنوان تصاویر با کیفیت بالا بدون نیاز به کدگذاری گسترده و یا دانش عمیق از ساختارهای داخلی اکسیل.
مشکل دنیای واقعی
طراحان گزارش و تجزیه و تحلیلگران کسب و کار اغلب نیاز به ادغام تصاویر مبتنی بر اکسل در ارائه ها، اسناد و برنامه های وب. دستی گرفتن عکس های صفحه نمایش و یا استفاده از کتابخانه های پیچیده تصویر دستکاری منجر به کیفیت نامناسب، از دست دادن فرمت، و توسعه قابل توجهی.
بررسی راه حل
با استفاده از Aspose.Cells LowCode ImageConverter، ما می توانیم این چالش را به طور موثر با کد حداقل حل کنیم.این راه حل ایده آل برای طراحان گزارش و تجزیه و تحلیلگران کسب و کار است که نیاز به برنامه ریزی برای تولید دارایی های بصری با کیفیت بالا از داده های اکسل در حالی که حفظ فرمت و وفاداری تصویری دارند.
پیش شرط
قبل از راه حل، مطمئن شوید که:
- Visual Studio 2019 یا بالاتر
- .NET 6.0 یا بالاتر (متوافق با .Net Framework 4.6.2+)
- Aspose.Cells برای بسته .NET نصب شده از طریق NuGet
- آشنایی با برنامه نویسی C#
PM> Install-Package Aspose.Cells
پیاده سازی گام به گام
مرحله 1: نصب و تنظیم Aspose.Cells
بسته Aspose.Cells را به پروژه خود اضافه کنید و فضاهای نامی مورد نیاز را شامل کنید:
using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
using System.IO;
مرحله دوم: اطلاعات ورودی خود را آماده کنید
فایل اکسل را که حاوی نمودارها یا ورق های کاری است که می خواهید به تصاویر PNG تبدیل کنید، شناسایی کنید. اطمینان حاصل کنید که فایل وجود دارد و از برنامه شما قابل دسترسی است:
// Define the path to your Excel file
string excelFilePath = "reports/quarterly_sales.xlsx";
// Ensure the directory for output exists
Directory.CreateDirectory("result");
مرحله 3: گزینه های 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 memory streams for programmatic use without file I/O
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;
// For web use, might want lower quality/size
imageOptions.Quality = 85;
saveOptions.ImageOptions = imageOptions;
saveOptions.OutputStream = outputStream;
ImageConverter.Process(loadOptions, saveOptions);
// Use the stream directly (e.g., with web responses)
byte[] imageBytes = outputStream.ToArray();
// Example: save to file from memory stream
File.WriteAllBytes("result/OptimizedChart.png", imageBytes);
}
مرحله هشتم: نمونه کامل
در اینجا یک نمونه کامل کار است که کل فرآیند را نشان می دهد:
using System;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.LowCode;
using Aspose.Cells.Rendering;
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، پورتال های وب یا اطلاعیه های ایمیل تبدیل کنند.این اتوماسیون تلاش دستی مورد نیاز برای تبدیل نمایش داده ها به فرم های قابل مصرف را کاهش می دهد.
پردازش مستندات اتوماتیک
سیستم های تولید اسناد می توانند به طور برنامه نویسی نمودارها و تجسم ها را از کتاب های کاری اکسل استخراج کنند تا گزارش های حرفه ای را که داده ها، متن و عناصر بصری را ترکیب می کنند، ایجاد کنند.
چالش ها و راه حل های مشترک
چالش اول: حفظ کیفیت تصویر
راه حل: گزینه های ImageOrPrintOptions را با تنظیمات کیفیت و پارامترهای رزولوشن مناسب تنظیم کنید تا عملکرد مطلوب را تضمین کند.برای ارائه ها و مواد چاپ شده، از ترتیبات کیفیت 90 یا بالاتر استفاده کنید و در نظر داشته باشید که تنظیم های DPI را بر اساس استفاده مورد نظر تنظیم می کنید.
چالش دوم: مدیریت کارگاه های بزرگ
پاسخ: از ویژگی های ImageOrPrintOptions.PageIndex و PageCount برای پردازش بخش های خاصی از ورق های بزرگ استفاده کنید.برای صفحات بسیار بزرگ، با استفاده از تکنیک های چسباندن با تنظیم تنظیمات صفحه سفارشی در فایل اکسل، در نظر بگیرید.
چالش سوم: راندینگ غیرمستقیم در اطراف محیط
** راه حل:** اطمینان حاصل کنید که فونت های مورد استفاده در فایل اکسل در سرور در دسترس هستند، یا از تنظیمات جایگزینی فونتی در Aspose.Cells استفاده کنید.
بررسی عملکرد
- استفاده از جریان های حافظه به جای فایل I/O در هنگام تبدیل چندین تصویر در یک فرآیند بسته
- برای محیط های چند رشته ای، مکانیزم های مناسب قفل را در هنگام دسترسی به منابع مشترک اجرا کنید.
- اندازه ورق و پیچیدگی آن را در هنگام تنظیم گزینه های کیفیت در نظر بگیرید: پیچیده تر نیاز به منابع پردازش بیشتری دارد.
بهترین شیوهها
- اجرای مکانیزم های کچینگ برای نمودارهای به طور مکرر برای جلوگیری از تبدیل های تکراری
- ایجاد یک کنوانسیون نامگذاری سیستماتیک برای فایل های خروجی برای ردیابی منبع هر تصویر
- شامل متا داده ها در دایرکتوری خروجی تصویر برای حفظ ردیابی به فایل های منبع اکسل
- قبل از پردازش، فایل های ورودی اکسل را تأیید کنید تا اطمینان حاصل شود که شامل نمودارها و داده های پیش بینی شده است.
- اجرای سوابق برای ردیابی تبدیل های موفق و هر مشکلی که در طول پردازش رخ می دهد
سناریوهای پیشرفته
برای نیازهای پیچیده تر، این پیاده سازی های پیشرفته را در نظر بگیرید:
سناریو 1: استخراج فقط نمودار های خاص از یک ورق کار
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;
using System.IO;
// Load the workbook
Workbook workbook = new Workbook("reports/charts.xlsx");
// Get the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Process each chart in the worksheet
for (int i = 0; i < worksheet.Charts.Count; i++)
{
Chart chart = worksheet.Charts[i];
// Save only specific charts based on title or other properties
if (chart.Title.Text.Contains("Revenue"))
{
// Create image for this specific chart
chart.ToImage("result/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، شما می توانید به طور موثر نمودارها و کارگاه های اکسل را به تصاویر PNG با کیفیت بالا تبدیل کنید و ایجاد دارایی های بصری برای گزارش ها و ارائه ها را سریع تر کنید.این رویکرد زمان توسعه و تلاش دستی را کاهش می دهد در حالی که وفاداری تصویری و هماهنگی فرمت را حفظ می کند.
برای اطلاعات بیشتر و نمونه های بیشتر، به Aspose.Cells.LowCode API ارجاع .