Как конвертировать графики и листы 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
Step-by-Step реализация
Шаг 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: Обратитесь к выходу
Обработка и использование генерируемых ПНГ изображений, как это необходимо для вашего приложения:
// 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 для создания профессиональных отчетов, которые сочетают данные, текст и зрительные элементы.
Общие вызовы и решения
Задача No1: Поддержка высокого качества изображения
Решение: Конфигурируйте ImageOrPrintOptions с соответствующими настройками качества и параметрами разрешения для обеспечения оптимальной производительности. Для презентаций и печатных материалов используйте настройки качества 90 или выше и рассмотрите настройку DPI на основе предполагаемого использования.
Проблема 2: Управление большими рабочими листами
Решение: Используйте свойства ImageOrPrintOptions.PageIndex и PageCount для обработки конкретных порций больших рабочих столов.Для очень большой рабочей столы, рассмотрите использование методов наклеивания, конфигурируя настройки страницы в файле Excel.
Проблема 3: Неустойчивое перемещение вокруг окружающей среды
Решение: Убедитесь в том, что шрифты, используемые в файле Excel, доступны на сервере, или используйте настройки замены шрифов в 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 Image
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 ссылка .