У сучасному світі, що керується даними, візуалізація складної інформації через графіки і графіки стала важливою. Хоча Excel забезпечує потужні можливості графіку, є безліч сценаріїв, де вам потрібно витягти ці візуальні елементи як самостійні зображення:

  • Включення графіків в доповіді та презентації
  • Вбудовані візуалізації в веб-приклади
  • Поділитися уявленнями без розповсюдження цілих слайдів
  • Створення документації з графічними ілюстраціями
  • Створення динамічного візуального контенту для бізнес-інтелектуальних панелей

Aspose.Cells для .NET пропонує міцне рішення для програмного перетворення графіків Excel на високоякісні зображення без необхідності установки Microsoft Excel.

Чому вибрати Aspose.Cells для перетворення графіків?

Традиційні підходи до автоматизації Excel можуть бути проблематичними в виробничих середовищах через:

  • Ускладнення безпеки
  • Застосування складності
  • Ліцензійні виклики
  • Використання флаконів
  • Проблеми стабільності

Aspose.Cells забезпечує присвячений API, спеціально розроблений для обробки файлів Excel з боку сервера, що забезпечує вищу продуктивність та надійність.

Розпочинаємо

Перед тим, як потрапити в приклади, переконайтеся, що у вас є:

  • Завантажити та встановити Завантажити .NET для .NET
  • Додано посилання на Aspose.Cells.dll У Вашому проекті
  • Ввезені необхідні номінаційні простіри:
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Rendering;

Основні карти для конверсії зображення

Почнемо з простих прикладів перетворення всіх графіків в робочому листі на зображення за допомогою C# Excel Chart to Image:

// Load the Excel file containing charts
Workbook workbook = new Workbook("SalesReport.xlsx");

// Access the worksheet containing charts
Worksheet sheet = workbook.Worksheets[0];

// Initialize counter for unique filenames
int chartIndex = 1;

// Process each chart in the worksheet
foreach (Chart chart in sheet.Charts)
{
    // Define the output path for the image
    string outputPath = $"Chart_{chartIndex}.png";
    
    // Convert the chart to an image
    chart.ToImage(outputPath, ImageFormat.Png);
    
    Console.WriteLine($"Successfully converted chart {chartIndex} to {outputPath}");
    chartIndex++;
}

Підвищена якість зображення за допомогою персоналізованих варіантів

Для професійних додатків, вам часто доведеться контролювати якість і зовнішній вигляд експортованих зображень.Це можна досягти за допомогою Java Excel Chart to Image техніки:

// Load the workbook containing charts
Workbook workbook = new Workbook("FinancialDashboard.xlsx");
Worksheet sheet = workbook.Worksheets["Performance Metrics"];

// Create image options with high resolution
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions
{
    HorizontalResolution = 300,
    VerticalResolution = 300,
    ImageFormat = ImageFormat.Jpeg,
    Quality = 95 // Higher quality JPEG compression
};

// Access a specific chart (e.g., the first chart)
Chart revenueChart = sheet.Charts[0];

// Convert with custom options
revenueChart.ToImage("Revenue_Trends_HQ.jpg", imageOptions);

Конвертація декількох графіків у різних форматах

Різні випадки використання можуть вимагати різних форматів зображення. ось як експортувати графіки до різних форматів:

// Load the Excel workbook
Workbook workbook = new Workbook("QuarterlyReport.xlsx");
Worksheet sheet = workbook.Worksheets["Sales Analysis"];

// Initialize counter for unique filenames
int idx = 0;

// Process each chart with custom options for different formats
foreach (Chart chart in sheet.Charts)
{
    // Create image options
    ImageOrPrintOptions imgOpts = new ImageOrPrintOptions();
    
    // Configure different settings based on chart index
    switch (idx % 3)
    {
        case 0: // PNG format with transparency
            imgOpts.ImageFormat = ImageFormat.Png;
            chart.ToImage($"Chart_{idx}_transparent.png", imgOpts);
            break;
            
        case 1: // JPEG format with high quality
            imgOpts.ImageFormat = ImageFormat.Jpeg;
            imgOpts.Quality = 100;
            chart.ToImage($"Chart_{idx}_high_quality.jpg", imgOpts);
            break;
            
        case 2: // SVG format for vector graphics
            imgOpts.ImageFormat = ImageFormat.Svg;
            chart.ToImage($"Chart_{idx}_vector.svg", imgOpts);
            break;
    }
    
    ++idx;
}

Розширені варіанти рейтингу

Коли вам потрібен точний контроль над процесом рендерації, Aspose.Cells надає широкі можливості налаштування:

// Load the source workbook
Workbook workbook = new Workbook("MarketingAnalytics.xlsx");
Worksheet sheet = workbook.Worksheets["Campaign Performance"];

// Get reference to a specific chart
Chart campaignChart = sheet.Charts[0];

// Create advanced rendering options
ImageOrPrintOptions renderOptions = new ImageOrPrintOptions
{
    // Set high resolution for print-quality output
    HorizontalResolution = 600,
    VerticalResolution = 600,
    
    // Control image appearance
    ImageFormat = ImageFormat.Png,
    OnlyArea = false, // Include the entire chart area
    
    // Set custom dimensions (if needed)
    CustomPrintPageWidth = 800,
    CustomPrintPageHeight = 600,
    
    // Enable text rendering hints for smoother text
    TextRenderingHint = TextRenderingHint.AntiAlias,
    
    // Apply print settings from the workbook
    PrintingPage = PrintingPageType.Default
};

// Convert chart with advanced options
campaignChart.ToImage("Campaign_Performance_Print_Quality.png", renderOptions);

Картини обробки батів з кількох робочих столів

У корпоративних додатках вам може знадобитися обробка графіків через кілька робочих столів:

// Load the source Excel file
Workbook workbook = new Workbook("AnnualReport.xlsx");

// Create a directory for output images
string outputDir = "ChartImages";
Directory.CreateDirectory(outputDir);

// Process charts from all worksheets in the workbook
foreach (Worksheet sheet in workbook.Worksheets)
{
    // Skip worksheets without charts
    if (sheet.Charts.Count == 0)
        continue;
        
    Console.WriteLine($"Processing {sheet.Charts.Count} charts from worksheet '{sheet.Name}'");
    
    // Process each chart in the current worksheet
    for (int i = 0; i < sheet.Charts.Count; i++)
    {
        // Get the chart
        Chart chart = sheet.Charts[i];
        
        // Create a descriptive filename
        string sanitizedSheetName = string.Join("_", sheet.Name.Split(Path.GetInvalidFileNameChars()));
        string outputPath = Path.Combine(outputDir, $"{sanitizedSheetName}_Chart_{i+1}.png");
        
        // Define image options
        ImageOrPrintOptions imgOptions = new ImageOrPrintOptions
        {
            HorizontalResolution = 300,
            VerticalResolution = 300
        };
        
        // Convert and save the chart
        chart.ToImage(outputPath, imgOptions);
        
        Console.WriteLine($"  - Saved chart {i+1} to {outputPath}");
    }
}

Конвертувати графіки в SVG для веб-прикладів

SVG (Scalable Vector Graphics) - це відмінний формат для веб-прикладів, що гарантує, що ваші графіки виглядають на будь-якій резолюції:

// Load the workbook
Workbook workbook = new Workbook("WebDashboard.xlsx");
Worksheet sheet = workbook.Worksheets["Performance Metrics"];

// Configure SVG export options
ImageOrPrintOptions svgOptions = new ImageOrPrintOptions
{
    ImageFormat = ImageFormat.Svg,
    SaveFormat = SaveFormat.Svg
};

// Export all charts to SVG with viewBox attribute for responsive display
for (int i = 0; i < sheet.Charts.Count; i++)
{
    Chart chart = sheet.Charts[i];
    
    // Export with viewBox attribute
    chart.ToImage($"WebChart_{i+1}.svg", svgOptions);
}

Моніторинг прогресу конверсії для великих робочих книг

При робочих книгах, що містять численні графіки, корисно відстежувати прогрес конверсії:

// Load a large workbook with many charts
Workbook workbook = new Workbook("EnterpriseReports.xlsx");

// Create a custom stream provider to monitor progress
class ChartConversionStreamProvider : IStreamProvider
{
    private int _totalCharts;
    private int _processedCharts = 0;
    
    public ChartConversionStreamProvider(int totalCharts)
    {
        _totalCharts = totalCharts;
    }
    
    public Stream GetStream(string chartName, StreamType streamType)
    {
        // Create output stream
        string outputPath = $"Chart_{chartName}.png";
        Stream stream = new FileStream(outputPath, FileMode.Create);
        
        // Update and report progress
        _processedCharts++;
        double progressPercentage = (_processedCharts / (double)_totalCharts) * 100;
        Console.WriteLine($"Converting chart {_processedCharts} of {_totalCharts}: {progressPercentage:F1}% complete");
        
        return stream;
    }
    
    public void CloseStream(Stream stream)
    {
        if (stream != null)
        {
            stream.Close();
        }
    }
}

// Count total charts across all worksheets
int totalCharts = 0;
foreach (Worksheet sheet in workbook.Worksheets)
{
    totalCharts += sheet.Charts.Count;
}

// Create stream provider and options
ChartConversionStreamProvider streamProvider = new ChartConversionStreamProvider(totalCharts);
ImageOrPrintOptions options = new ImageOrPrintOptions
{
    HorizontalResolution = 300,
    VerticalResolution = 300
};

// Process each chart with progress tracking
int chartIndex = 0;
foreach (Worksheet sheet in workbook.Worksheets)
{
    foreach (Chart chart in sheet.Charts)
    {
        // Generate unique chart name
        string chartName = $"{sheet.Name}_Chart_{chartIndex++}";
        
        // Convert using stream provider
        chart.ToImage(streamProvider.GetStream(chartName, StreamType.Output), options);
    }
}

Найкращі практики для перетворення карти в зображення

Щоб досягти оптимальних результатів при конвертації графіків Excel на зображення, розгляньте ці рекомендації:

  • Налаштування роздільної здатності на основі цілей: Використовуйте більш високу роздільну здатність (300+ ДПІ) для друкованих матеріалів, а нижчі роздільні зображення для веб-дисплею.
  • Виберіть правильний формат: Використовуйте PNG для графіків з прозорості, JPEG для фотографій і SVG для веб-прикладів.
  • Тест Інші налаштування якості: Баланс розміру файлу і якості зображення, особливо для компресії JPEG.
  • Sanitize Filenames: При генеруванні філенових імен з імен робочого столу, видаляйте недійсні символи.
  • Implement Progress Tracking: Для робочих книг з багатьма графіками надайте відгуки про прогрес користувачам.
  • Практикуйте ресурсами належним чином: Залишайте потоки і розчиняйте об’єкти, щоб запобігти витокам пам’яті.

Заключення

Aspose.Cells для .NET забезпечує потужне, гнучко рішення для програмного перетворення графіків Excel в різні формати зображень. Незалежно від того, чи потрібні вам знімки високої роздільної здатності для друкованих матеріалів, оптимізовані графіка для веб-прикладів, або векторні SVG для реактивних дизайнів, Asposa.cells надає постійні, високоякісні результати без необхідності встановлення Microsoft Excel.

Слідкуючи за прикладами та кращими практиками, зазначеними в цій статті, ви можете інтегрувати можливості перетворення графіків на зображення в ваші програми .NET, покращуючи робочі потоки з візуалізації даних і дозволяючи безперервний обмін візуалізаціями на основі Excel на різних платформах і засобах масової інформації.

More in this category