Як перетворити графіки і листівки Excel на зображення PNG
Ця стаття показує, як конвертувати графіки і робочі таблиці Excel в PNG зображення за допомогою Aspose.Cells LowCode ImageConverter в .NET-прикладах. Image Convertor забезпечує ускладнений підхід до експортування візуальних елементів Excel як високоякісних знімків без необхідності широкого кодування або глибоких знань про внутрішні структури Excel.
Реальні проблеми світу
Докладні дизайнери та бізнес-аналітики часто потребують інтегрувати зображення, засновані на Excel, в презентації, документи та веб-приклади. Ручно робити знімки екрану або використовувати складні бібліотеки з маніпуляціям малюнків призводить до несумісної якості, втраченого форматування та значного розвитку.
Огляд рішення
Використовуючи Aspose.Cells LowCode ImageConverter, ми можемо ефективно вирішити цю проблему з мінімальним кодом.Це рішення ідеально підходить для дизайнерів звітів та бізнес-аналітиків, які потребують програматичного генерування високоякісних візуальних активів з даних Excel, зберігаючи форматування та вірність.
Передумови
Перед тим, як реалізувати рішення, переконайтеся, що у вас є:
- 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;
Крок 2: Підготуйте свої вхідні дані
Визначте файл Excel, що містить графіки або робочі таблиці, які ви хочете конвертувати в 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;
Крок 4: Виконання процесу 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);
Крок 5: Зробіть вихід
Процесуйте і використовуйте генерувані 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");
}
Крок 6: Використання помилок
Додайте правильний обробка помилок для забезпечення міцного функціонування:
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
}
Крок 7: Оптимізація продуктивності
Розглянемо такі методи оптимізації для виробничих середовищ:
- Використовуйте потоки пам’яті для обробки високого обсягу, щоб уникнути перевищення файлу 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);
}
Крок 8: Повний приклад реалізації
Ось повний робочий приклад, який демонструє весь процес:
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);
}
}
}
}
Використання випадків та додатків
Системи корпоративного звітування
Фінансові аналітики можуть автоматично генерувати візуальні активи з доповідей Excel для включення в виконавчі презентації або панелі.Це усуває ручне зйомки екрану і забезпечує стійкі, високоякісні перегляди, які точно відображають джерельні дані.
Робочі потоки інтеграції даних
Інтеграційні робочі потоки можуть автоматично конвертувати графіки на основі Excel у формати зображення для включення в PDF-репортажі, веб-портали або повідомлення по електронній пошті.Ця автоматизація зменшує ручні зусилля, необхідні для перетворення візуалізацій даних в споживчі формати.
Автоматична обробка документів
Системи генерування документів можуть програматично витягувати графіки та візуалізації з робочих книг Excel, щоб створити професійні звіти, які поєднують дані, текст і видимі елементи.
Спільні виклики та рішення
Виклик 1: Підтримка високої якості зображення
Рішення: Налаштуйте ImageOrPrintOptions з відповідними налаштуваннями якості та параметрами розділу, щоб забезпечити оптимальну продуктивність.Для презентацій та друкованих матеріалів, використовуйте якісні настрої 90 або вище і розгляньте адаптацію DPI на основі наміченого використання.
Розділ II. Використання великих робочих місць
Рішення: Використовуйте властивості ImageOrPrintOptions.PageIndex і PageCount для обробки конкретних порцій великих робочих столів.Для дуже великого робочого столу, розгляньте використання методів вишивки шляхом конфігурації налаштувань сторінки в файлі Excel.
Виклик 3: Неконзистентне обертання навколо середовища
Рішення: Переконайтеся, що шрифти, які використовуються в файлі Excel, доступні на сервері, або використовуйте налаштування заміни font в Aspose.Cells. Тестуйте ретельно в різних середовищах розташування і розгляньте можливість вбудувати необхідні букви у вашу програму.
Виконання розглядів
- Використовуйте потоки пам’яті замість файлу I/O при конвертації декількох зображень в комплектний процес
- Для багатоповерхових середовищ застосовувати відповідні механізми закриття при доступі до спільних ресурсів
- Зверніть увагу на розмір і складність листівки при встановленні варіантів якості – більша складність вимагає більше ресурсів обробки.
Найкращі практики
- Використання кеш-механізмів для часто доступних графіків, щоб уникнути повторних конверсій
- Створення систематичної конвенції назви для вихідних файлів для відстеження джерела кожного зображення
- Включити метадані в каталог виходу зображення, щоб зберегти відстеження назад до джерела файлів Excel
- Введіть файли Excel перед обробкою, щоб переконатися, що вони містять очікувані графіки та дані
- Введення логінг для відстеження успішних конверсій і будь-яких проблем, що виникають під час обробки
Розширені сценарії
Для більш складних вимог розглянемо такі передові реалізації:
Сценарій 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
});
}
}
Сценарій 2: Створення багатокартного зображення Dashboard
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 .